действие, выполняемое при выборе опции из JComboBox - PullRequest
2 голосов
/ 08 января 2012

Привет У меня есть JComboBox с 3 вариантами, и я пытаюсь выяснить, какой actionlistener применить, чтобы что-то произошло, когда выбран вариант.На данный момент мой код:

comboBoxMode = new JComboBox();
    comboBoxMode.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent arg0) {
            int selection = comboBoxMode.getSelectedIndex();
            switch (selection){
            case 0:  break;
            case 1:  enableNormalModeFeatures(); break;
            case 2:  enableRevisionModeFeatures(); break;
            case 3:  enableTimerModeFeatures(); break;
            }
        }
    });
    comboBoxMode.setModel(new DefaultComboBoxModel(new String[] {"[--Please Select a Mode--]", "Normal", "Revision", "Timer"}));

Цель состоит в том, чтобы включить другие инструменты выбора на странице, когда они выбирают определенный режим.mouselistener, кажется, не работает.Что меня смутило, так это то, что вам действительно нужно дважды щелкнуть, чтобы выбрать опцию, но я предполагаю, что есть некоторый встроенный код, который можно запустить, только если выбран элемент списка?Во всяком случае, любые указатели будут оценены, спасибо, ребята!

Ответы [ 3 ]

4 голосов
/ 08 января 2012

Я бы предложил ItemListener .

comboBoxMode = new JComboBox();

comboBoxMode.addItemListener(this);
...
public void itemStateChanged(ItemEvent e) {
    if ((e.getStateChange() == ItemEvent.SELECTED)) {
       int selection = comboBoxMode.getSelectedIndex();
            switch (selection){
            case 0:  break;
            case 1:  enableNormalModeFeatures(); break;
            case 2:  enableRevisionModeFeatures(); break;
            case 3:  enableTimerModeFeatures(); break;
     }
}
4 голосов
/ 08 января 2012

Почему бы просто не использовать ActionListener, как подсказывает поле со списком ?Либо это, либо ItemListener, который также упоминается в руководстве.Учебник также настоятельно рекомендует не использовать MouseListener.

Общий урок, который можно извлечь из этого вопроса: посмотрите на учебники по Java, поскольку вы часто получите ответ на свой вопрос быстрее, чем вы можете получить здесь,и с приличным примером кода тоже!

Удачи.

1 голос
/ 08 января 2012

попробуйте применить обычный actionlistener:

class ComboListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            AbstractButton abstractButton =(AbstractButton)e.getSource();
            ButtonModel buttonModel = abstractButton.getModel();
            //buttonModel.isSelected()
        }

    }
...