我想在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()
不可能 从静态上下文引用
答案 0 :(得分:0)
PersonelMainForm.add(statusPanel, BorderLayout.SOUTH);
在这里,您尝试使用static
add
方法,该方法不存在(请记住,以大写字母开头的标识符必须是类)。从您的代码中看起来您已经创建了一个实例,并为实例(小写)提供了适当的大小写,因此只需将其更改为:
personelMainForm.add(statusPanel, BorderLayout.SOUTH);
对另一个错误执行相同操作。
请记住,在java中大写是很重要的(大写和小写标识符不一样)。如果是static
,则只能从类标识符中调用方法。
答案 1 :(得分:0)
考虑在NetBeans平台(基于Swing的RCP)之上构建应用程序。它带有StatusBar支持等等:
答案 2 :(得分:0)
您只是将 p 错误输入 P
更改
PersonelMainForm.add(/* ... */)
PersonelMainForm.getWidth()
要
personelMainForm.add(/* ... */)
personelMainForm.getWidth()