1

netbeans の Java アプリケーションにステータス バーを追加したいと考えています。

私はそれについてググって、この記事を見つけました:

Java アプリの下部にステータス バーのようなバーを作成するにはどうすればよいですか?

その記事と同じことをしましたが、エラーがありました。

これは私が試したコードです:

public void run() {

    PersonelMainForm personelMainForm = new PersonelMainForm();

    personelMainForm.setExtendedState(
        personelMainForm.getExtendedState()|JFrame.MAXIMIZED_BOTH );

    // create the status bar panel and shove it down the bottom of the frame
    statusPanel = new JPanel();
    statusPanel.setBorder(new BevelBorder(BevelBorder.LOWERED));
    PersonelMainForm.add(statusPanel, BorderLayout.SOUTH);
    statusPanel.setPreferredSize(new Dimension(PersonelMainForm.getWidth(), 16));
    statusPanel.setLayout(new BoxLayout(statusPanel, BoxLayout.X_AXIS));
    JLabel statusLabel = new JLabel("status");
    statusLabel.setHorizontalAlignment(SwingConstants.LEFT);
    statusPanel.add(statusLabel);

    personelMainForm.setVisible(true);
}

これは、次の行のエラー メッセージですPersonelMainForm.add(statusPanel, BorderLayout.SOUTH);

非静的メソッドadd(java.awt.Component,java.lang.Object)は静的コンテキストから参照できません

これは、次の行のエラー メッセージですstatusPanel.setPreferredSize(new Dimension(PersonelMainForm.getWidth(), 16));

スレッド「AWT-EventQueue-0」の例外java.lang.RuntimeException: コンパイルできないソース コード - 非静的メソッドgetWidth()は静的コンテキストから参照できません

4

3 に答える 3

0
 PersonelMainForm.add(statusPanel, BorderLayout.SOUTH);

ここでは、存在しないメソッドを使用しようとしstatic addています (大文字で始まる識別子はクラスでなければならないことに注意してください)。コードから、インスタンスの適切な大文字と小文字 (小文字) を使用して、インスタンスが既に作成されているように見えるので、次のように変更します。

 personelMainForm.add(statusPanel, BorderLayout.SOUTH);

他のエラーについても同じことを行います。

Java では大文字と小文字が重要であることに注意してください (大文字と小文字の識別子は同じではありません)。である場合にのみ、クラス識別子からメソッドを呼び出すことができますstatic

于 2013-05-24T11:31:00.420 に答える
0

NetBeans プラットフォーム (Swing ベースの RCP) の上にアプリケーションを構築することを検討してください。StatusBar のサポートなどが付属しています。

https://netbeans.org/features/platform/

http://wiki.netbeans.org/BookNBPlatformCookbookCH0211

于 2013-05-24T11:33:49.593 に答える
0

あなたは単にタイプミスpしましたP

変化する

PersonelMainForm.add(/* ... */)
PersonelMainForm.getWidth()

personelMainForm.add(/* ... */)
personelMainForm.getWidth()
于 2013-05-24T11:34:29.057 に答える