所以我有
一个带有JCheckBox对象列表的 CheckBoxList 类(扩展JPanel)
public class CheckBoxList extends JPanel {
List<JCheckBox> checkboxes;
.......
}
MyChart 类,带有JFreeChart个对象。 每个JCheckBox代表一个选择:如果选中,则在图表上显示数据集;如果未选中,则隐藏该数据集。因此,对于每个JCheckBox,都有一个配对的数据集。
我的想法是 MyChart 将自己注册为每个JCheckBox的侦听器(因此它实现了ItemStateChanged(ItemEvent)方法)。但是,如何识别哪个JCheckBox发送了ItemEvent,从而隐藏或显示相应的数据集?
答案 0 :(得分:2)
您可以为每个侦听器设置不同的侦听器,也可以检查事件源
Object source = event.getSource() // -- I think this is the right syntax
if (source instanceof JCheckBox) {
JCheckBox cb = (JCheckBox)source;
if (cb.getText().equals("Checkbox 1") {
} else if (cb.getText().equals("Checkbox 2")){
}
}
或者,您可以为每个复选框覆盖JCheckBox类,只测试每个复选框的源代码。
答案 1 :(得分:2)
以下是Java Tutorial建议的内容:检查事件的来源。
答案 2 :(得分:1)
您必须将侦听器添加到每个菜单项。
JCheckBoxMenuItem menuItem1 = new JCheckBoxMenuItem("Item 1");
menuItem1.addActionListener(listener);
在每个菜单项上设置动作命令将允许您在ActionListener中打开动作命令。