Java 从组件容器中查找和检索组件
在基于swing的UI中,我有一个JMenuBar,其中包含一系列JMenu和JMenuItem对象。其中一个菜单项对象恰好也是JCheckBoxMenuItem 现在,虽然用户可以单击此JCheckBoxMenuItem来切换应用程序级别设置的状态,但用户(在我的应用程序中)也可以访问命令行API来更改应用程序设置。此命令行API的详细信息不相关 我的问题是:当用户通过命令行API并切换设置的状态(应用于我的应用程序的所有打开实例的静态属性/设置)时,我想更新JCheckBoxMenuItem上的“checked/unchecked”属性。为此,我可以:Java 从组件容器中查找和检索组件,java,swing,jcomponent,Java,Swing,Jcomponent,在基于swing的UI中,我有一个JMenuBar,其中包含一系列JMenu和JMenuItem对象。其中一个菜单项对象恰好也是JCheckBoxMenuItem 现在,虽然用户可以单击此JCheckBoxMenuItem来切换应用程序级别设置的状态,但用户(在我的应用程序中)也可以访问命令行API来更改应用程序设置。此命令行API的详细信息不相关 我的问题是:当用户通过命令行API并切换设置的状态(应用于我的应用程序的所有打开实例的静态属性/设置)时,我想更新JCheckBoxMenuItem
Component[] childComponents = menu.getComponents();
for(Component c:childComponents)
{
if(c.getName().equals("nameOfTheCheckBoxMenuItem"))
{
componentFound = c;
}
}
是否有更好/更有效的方法在组件层次结构中查找组件?是否有更好的方法来解决这个问题(当我的应用程序中的属性值发生变化时,更改jcheckboxmenuitem的状态),比如使用PropertyChangeListener(尽管我的理解是这些方法只适用于“bean”).1)我建议对多面板应用程序使用最好、最简单的解决方法
2) 然后你就可以买些东西了
- 添加/
- 加
ActionListener al = new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (myCheckBox.isSelected()) {
// something
} else {
// something
}
}
};
ItemListener itemListener = new ItemListener() {
public void itemStateChanged(ItemEvent itemEvent) {
if (Whatever) {
// something
}
}
};