向Java应用程序添加状态栏

时间:2013-05-24 11:26:15

标签: java netbeans statusbar

我想在netbeans中将状态栏添加到我的Java应用程序中。

我用Google搜索了一下,我找到了这篇文章:

How can I create a bar in the bottom of a Java app, like a status bar?

我做的和那篇文章一样,但我有一个错误。

这是我尝试过的代码:

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()不可能   从静态上下文引用

3 个答案:

答案 0 :(得分:0)

 PersonelMainForm.add(statusPanel, BorderLayout.SOUTH);

在这里,您尝试使用static add方法,该方法不存在(请记住,以大写字母开头的标识符必须是类)。从您的代码中看起来您已经创建了一个实例,并为实例(小写)提供了适当的大小写,因此只需将其更改为:

 personelMainForm.add(statusPanel, BorderLayout.SOUTH);

对另一个错误执行相同操作。

请记住,在java中大写是很重要的(大写和小写标识符不一样)。如果是static,则只能从类标识符中调用方法。

答案 1 :(得分:0)

考虑在NetBeans平台(基于Swing的RCP)之上构建应用程序。它带有StatusBar支持等等:

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

http://wiki.netbeans.org/BookNBPlatformCookbookCH0211

答案 2 :(得分:0)

您只是将 p 错误输入 P

更改

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

personelMainForm.add(/* ... */)
personelMainForm.getWidth()