1. 程式人生 > >ComboBox點選事件過濾

ComboBox點選事件過濾

最近在做一個Swing的設計,用到了 ComboBox 下拉框,在為 ComboBox 的 Item 新增監聽時遇到一個問題:每次點選都會觸發兩次監聽事件。

查詢資料得知,每一個 Item 在整個生命週期都會觸發兩次 ItemListener 事件:

  • 選中
  • 取消選中

當點選一個 Item 時,分別會觸發上一個被選中 Item 的取消選中事件和當前 Item 的選中事件,如此,必須要對這兩個事件進行一個過濾,以這個思想為基礎,而後便對 ItemEvent 的各個 get...( ) 方法進行了一次檢查:

 

果然,在 getStateChange() 方法上找到了突破:

  • 若 ItemEvent 是由上一個 Item 的被取消選擇事件觸發的,ItemEvent.getStateChange() 方法將返回 2;
  • 若 ItemEvent 是由當前 Item 被選擇事件觸發的,則 ItemEvent.getStateChange() 方法將返回 1。

可以以此為基礎來對事件進行過濾