向 Java 应用程序添加状态栏
Posted
技术标签:
【中文标题】向 Java 应用程序添加状态栏【英文标题】:Adding a status bar to Java application 【发布时间】:2013-05-19 23:47:42 【问题描述】:我想在 netbeans 中的 Java 应用程序中添加一个状态栏。
我搜索了一下,发现了这篇文章:
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()
不能 从静态上下文引用
【问题讨论】:
【参考方案1】: PersonelMainForm.add(statusPanel, BorderLayout.SOUTH);
在这里,您尝试使用不存在的static
add
方法(请记住,以大写字母开头的标识符必须是类)。从您的代码来看,您似乎已经创建了一个实例,并且实例的大小写正确(小写),因此只需将其更改为:
personelMainForm.add(statusPanel, BorderLayout.SOUTH);
对另一个错误执行相同的操作。
请记住,在 java 中大写很重要(大写和小写标识符不相同)。如果是static
,则只能从类标识符中调用方法。
【讨论】:
【参考方案2】:考虑在 NetBeans 平台(基于 Swing 的 RCP)之上构建您的应用程序。它带有 StatusBar 支持等等:
https://netbeans.org/features/platform/
http://wiki.netbeans.org/BookNBPlatformCookbookCH0211
【讨论】:
【参考方案3】:你只是把 p 打错成 P
改变
PersonelMainForm.add(/* ... */)
PersonelMainForm.getWidth()
到
personelMainForm.add(/* ... */)
personelMainForm.getWidth()
【讨论】:
以上是关于向 Java 应用程序添加状态栏的主要内容,如果未能解决你的问题,请参考以下文章
向状态栏添加颜色时,在状态栏下方添加额外的填充(在 iOS 中)