Java:从新的JFrame获取复选框名称

时间:2012-04-24 17:16:39

标签: java swing jframe jcheckbox

我将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。如果我将这个CheckBox添加到框架中,它可以正常工作。如果我打开第二个JFrame,并将此复选框添加到第二帧,并且对象源不再有效。我需要做一些其他的定义来让Object源读取任何打开帧的复选框名称吗?

1 个答案:

答案 0 :(得分:2)

首先,您不能将组件添加到多个父级;我不确定那是你的问题。

您正在调用复选框的“名称”不是复选框的属性,而是指向复选框的变量的属性。差异很重要,因为可能存在许多这样的变量。该复选框对指向它的变量一无所知。

鉴于此,我们如何解决问题?您可以设置复选框的“操作命令”,然后检查:

 NewCB.setActionCommand("Fred");
 // ...
 if ("Fred".equals(((JCheckBox) source).getActionCommand())))
     // ...