选择JComboBox中的选项时执行的操作

时间:2012-01-08 14:19:50

标签: java swing jcombobox actionlistener

您好我有一个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 个答案:

答案 0 :(得分:4)

为什么不简单地使用ActionListener作为combo box tutorial建议?要么是教程中提到的ItemListener,要么是{{1}}。本教程还强烈建议不要使用MouseListener。

从这个问题中得到的一个总体教训是:查看Java教程,因为您经常可以更快地得到问题的答案,而且还可以使用合适的示例代码!

运气。

答案 1 :(得分:4)

我建议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;
     }
}

答案 2 :(得分:1)

尝试应用普通的actionlistener:

class ComboListener implements ActionListener{

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

    }