I have a JCheckBox defined as:
JCheckBox NewCB = new JCheckbox();
NewCB.setSelected(false);
NewCB.setMnemonic(KeyEvent.VK_C);
NewCB.addItemListener(this);
This Check Box is using an ItemLisener:
public void itemStateChanged(ItemEvent e) {
Object source = e.getItemSelectable();
if(source == NewCB) {TEST = "SELECTED"; System.out.println(TEST);}
}
I launch a JFrame when the program starts. If I add this CheckBox to the frame, it works fine. If I open a second JFrame, and add this Check Box to the 2nd frame, and the Object Source no longer works. Is there some other definition I need to make to get the Object source to read the check box name for any open frames?
First of all, you can't add a component to more than one parent; I'm not sure that's your problem though.
The thing you're calling the "name" of the checkbox isn't a property of the checkbox, but rather a property of a variable that points to the checkbox. The difference is important, because there could be many such variables. The checkbox doesn't know anything about the variables that point to it.
Given that, how do we solve the problem? You can set the "action command" of the checkbox, and then check that:
NewCB.setActionCommand("Fred");
// ...
if ("Fred".equals(((JCheckBox) source).getActionCommand())))
// ...