【问题标题】:NetBeans Platform and StatusLineElementProviderNetBeans 平台和 StatusLineElementProvider
【发布时间】:2012-07-12 20:47:41
【问题描述】:

我正在使用 NetBeans 平台 和 Java 来开发应用程序。在应用程序的底部有一个 StatusDisplayer,默认情况下始终包含它。在此 StatusDisplayer 中,我添加了一个面板 (StatusBarJPanel)。此 StatusBarJPanel 有两个图像图标,指示网络活动。

我不知道如何隐藏(setVisible(false))此面板上在没有活动时在运行时创建的这些图标...如何更新 StatusBarJPanel 上的两个图标。

以下是将我的 StatusBarJPanel 添加到 StatusDisplayer 的代码:

import java.awt.Component;
import gui.StatusBarJPanel;
import org.openide.awt.StatusLineElementProvider;
import org.openide.util.lookup.ServiceProvider;

@ServiceProvider(service = StatusLineElementProvider.class)

public class StatusBar implements StatusLineElementProvider {

    private StatusBarJPanel statusBarBottomJPanel = new StatusBarJPanel();

    @Override
    public Component getStatusLineElement() {
        return statusBarBottomJPanel;
    }
}

【问题讨论】:

    标签: java swing netbeans-7 statusbar netbeans-platform


    【解决方案1】:

    如果我正确理解您的要求,您应该能够执行以下操作:

    Collection<? extends StatusLineElementProvider> all = 
        Lookup.getDefault().lookupAll(StatusLineElementProvider.class);
    for (StatusLineElementProvider a : all) {
        if (a instanceof StatusBar) {
            StatusBarJPanel ele = (StatusBarJPanel ) ((StatusBar) a).getStatusLineElement();
            ele.doUpdate(); // or whatever method you need to call
        }
    }
    

    使用此技术将为您提供与启动时在状态行中注册的相同的StatusLineElementProviders。

    【讨论】:

    • 非常感谢,这就是我一直在寻找的东西,而且效果很好!
    【解决方案2】:

    您没有显示您的StatusBarJPanel。大概它包含两个JComponents,例如JLabel,每个都有一个ImageIcon。使用setIcon(icon) 更改IconsetIcon(null) 以使图标消失应该很简单。 herehere展示的例子可以用来测试效果。

    顺便说一句,您可以在@ServiceProvider 注释中指定position,如here 所示。

    【讨论】:

    • 谢谢。我可能没有正确解释我的问题。是的,我在 StatusBarJPanel 上有 2 个 JLabel。我想知道一旦应用程序已经运行,如何“发出信号”来显示/隐藏这些图标?我尝试使用接口,但不知道如何。启动时应用程序显示面板,但我以后如何更新此面板?
    • 还可以考虑将松耦合作为替代方案,提到here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多