2010-12-09 16 views
4

我在尋找一個觸發只有當用戶,誰在使用該程序的一個,選擇在JComboBox項偵聽器選擇一個項目時將觸發的監聽器。我不想用ActionListenerItemListener因爲那些還火的時候,我在節目中選擇一個項目。我不能用MouseListener可能是因爲它只有當我點擊JComboBox,而不是當我選擇一個項目觸發。我如何當用戶的JComboBox

我不知道該怎麼做最簡單的方法是什麼?目前,我的解決方案很混亂。當我通過代碼更改jcombobox的選定項目時,我將標誌設置爲true。而且在我的動作偵聽器中,只有在該標誌爲false時纔會執行。

+0

當我通過代碼更改jcombobox的選定項目時,我將標誌設置爲true。而且在我的動作偵聽器中,只有在該標誌爲false時纔會執行。 - 我不得不在幾個案例中這樣做,我也想知道解決這個問題的方法。 – 2010-12-09 21:53:26

回答

1

A)我會建議您在編程進行選擇暫時刪除的監聽器。 B)如果你的程序改變不是另一個GUI事件的影響,你可以用下面的醜陋/不健壯/容易出錯/「黑客」的方式來解決它:檢查EventQueue.isEventDispatchThread()以確定點擊是否被觸發GUI線程(用戶)。

C)(哎呀我只是重讀你的問題,看到你已經發現了下面所描述的方法。基本上,我要說的是,這個(或上述方法)是您最佳的選擇。)

另一種選擇是有一個名爲像nonUserSelection你選擇一個值編程和重置爲假之後才設置爲true布爾標誌。在動作監聽器中,您只需添加一個

if (nonUserSelection) 
    return; 
+0

這是另一個GUI事件的效果。我正在做的是將2個組合框放在一起。當用戶選擇第一個內容時,第二個內容會被選中,除非用戶已經選擇了該內容。 – fent 2010-12-09 22:04:05

相關問題