我正在使用 NetBeans平台和Java开发应用程序。在应用程序的底部,有一个StatusDisplayer,默认情况下始终包括在内。在此StatusDisplayer中,我添加了一个面板(StatusBarJPanel)。此StatusBarJPanel具有两个图像图标,指示网络 Activity 。
我不知道如何在没有 Activity 时在运行时创建的面板上隐藏(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;
}
}
最佳答案
如果我正确理解了您的要求,那么您应该可以执行以下操作:
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
}
}
使用此技术将为您提供与启动时在状态行中注册的相同
StatusLineElementProvider
。