我有一个 JCheckBox 定义为:
JCheckBox NewCB = new JCheckbox();
NewCB.setSelected(false);
NewCB.setMnemonic(KeyEvent.VK_C);
NewCB.addItemListener(this);
此复选框正在使用 ItemLisener:
public void itemStateChanged(ItemEvent e) {
Object source = e.getItemSelectable();
if(source == NewCB) {TEST = "SELECTED"; System.out.println(TEST);}
}
我在程序启动时启动 JFrame。如果我将此复选框添加到框架中,它就可以正常工作。如果我打开第二个 JFrame,并将此复选框添加到第二个框架,则对象源不再起作用。我是否需要进行一些其他定义才能让对象源读取任何打开框架的复选框名称?
最佳答案
首先,你不能将一个组件添加到多个父级;但我不确定这是你的问题。
您所说的复选框“名称”不是复选框的属性,而是指向该复选框的变量的属性。这种差异很重要,因为可能有很多这样的变量。该复选框对指向它的变量一无所知。
既然如此,我们该如何解决这个问题呢?您可以设置复选框的“操作命令”,然后检查:
NewCB.setActionCommand("Fred");
// ...
if ("Fred".equals(((JCheckBox) source).getActionCommand())))
// ...
关于Java:从新的 JFrame 获取复选框名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302773/