Как узнать, какой JCheckBox отправил ItemEvent - PullRequest
2 голосов
/ 01 марта 2012

Итак, у меня есть

  • a CheckBoxList класс (расширяющий JPanel) со списком объектов JCheckBox

    public class CheckBoxList extends JPanel {
       List<JCheckBox> checkboxes;
       .......    
    }
    
  • a MyChart класс, с объектом JFreeChart .Каждый JCheckBox представляет выбор: если установлен этот флажок, отображать набор данных на диаграмме;если не отмечено, чтобы скрыть этот набор данных.Таким образом, для каждого JCheckBox есть парный набор данных.

Моя идея состоит в том, что MyChart регистрируется как слушатель для каждого JCheckBox (поэтому он реализует ItemStateChanged (ItemEvent)метод).Но как я могу узнать, какой JCheckBox отправил ItemEvent, и, следовательно, скрыть или показать соответствующий набор данных?

Ответы [ 3 ]

2 голосов
/ 01 марта 2012

Вот что предлагает Java Tutorial : проверьте источник события.

2 голосов
/ 01 марта 2012

Вы можете установить разные прослушиватели для каждого или проверить источник события

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 голос
/ 01 марта 2012

Вы должны добавить слушателя к каждому пункту меню.

JCheckBoxMenuItem menuItem1 = new JCheckBoxMenuItem("Item 1");
menuItem1.addActionListener(listener);

Установка команды действия для каждого пункта меню позволит вам включить команду действия в ActionListener.

...