2012-01-08 66 views
2

嗨我有一個JComboBox有3個選項,我試圖找出哪些actionlistener要應用以便在選擇某個選項時發生某些事情。目前我的代碼是:當選擇JComboBox選項時執行的動作

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似乎沒有工作。令我困惑的是,你實際上必須點擊兩次來選擇一個選項,但我假設有一些內置代碼只在列表項被選中時才運行。無論如何,任何指針將不勝感激,謝謝你們!

回答

4

爲什麼不簡單地使用ActionListener作爲combo box tutorial的建議?無論是那個還是ItemListener這也是教程中提到的。本教程還強烈建議不要使用MouseListener。

從這個問題得到的一般教訓是:查看Java教程,因爲您經常會比您可以在此得到更快的答案,並且體面的示例代碼也可以!

好運。

1

嘗試應用正常的ActionListener:

class ComboListener implements ActionListener{ 

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

    } 
3

我建議的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; 
    } 
} 
+1

+1請加'如果((e.getStateChange()== ItemEvent.SELECTED)){' – mKorbel 2012-01-08 18:03:22

+0

@mKorbel添加:) – COD3BOY 2012-01-09 01:14:05

相關問題