2010-12-14 62 views
2

有沒有辦法區分使用setSelectedBoundValue和點擊JComboBox以編程方式更改JComboBox的索引?JComboBox操作

回答

2

這是醜陋和一個真正的黑客,但作品!

ActionEvent包含一個字段修飾符,在這種情況下,它是鼠標按鈕ID。因此,使用可以幫助您setSelectedIndexsetSelectedValue和鼠標點擊之間區分(順便說一下setSelectedBoundValue不在JComboBox的方法):

box.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     if (e.getModifiers() != 0) { 
      // ~ mouse button pressed ;) 
     } 
    } 
}); 
+0

我知道這個問題說「點擊」,但我認爲你必須假設用戶也可以使用回車鍵來選擇組合框中的項目。在這0返回。所以你無法區分用戶操作和程序員操作。 – camickr 2010-12-14 17:13:23

+0

我說點擊是有原因的! :-D – dacwe 2010-12-14 20:45:06

0

setSelectedBoundValue

從來沒有聽說過這種方法嗎?

有沒有一種方式JcomboBox的指數來區分被編程改變

不是真的。您可以刪除監聽器:

comboBox.removeActionListener(...); 
comboBox.setSelectedItem(...); 
comboBox.addActionListener(...); 

您可以設置自己的類變量。

manualSelection = true; 
comboBox.setSelectedIndex(...); 
manualSelection = false; 
+0

LOLZ,對不起。我正在修補setSelectedIndex。 – Rabin 2010-12-14 10:24:25