向 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 中)

iOS 7状态栏半透明,具有向后兼容性

状态栏添加额外的填充 React-native

添加新 UIWindow 时以编程方式隐藏状态栏?

有没有办法向 react.native WebView 添加导航/状态栏?

iOS 8 -- 对导航栏和状态栏应用模糊