您好我有一个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似乎没有工作。令我感到困惑的是,你实际上必须单击两次来选择一个选项,但我假设有一些内置代码只能在选择列表项时运行?无论如何,任何指针都会受到赞赏,谢谢你们!
答案 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()
}
}