2013-06-01 28 views
1

我想在我的ItemListener中添加一個條件,並且只有當條件被驗證時該項目被選中,否則我不希望用戶能夠選擇該項目。Java的JComboBox Invalidade ItemListener中的項目選擇

我該如何失效物品監聽器上的選擇?在項目偵聽器中進行新的選擇?這不是一個無限循環嗎? :o

非常感謝。 這裏是我的代碼:

private final class classeComboBoxItemListener implements ItemListener { 
     @Override 
     public void itemStateChanged(ItemEvent e) { 


      try { 
       if(e.getStateChange() == ItemEvent.DESELECTED) 
        updateLabelLugares(true, (Classe) e.getItem()); 

       if(e.getStateChange() == ItemEvent.SELECTED) 
        updateLabelLugares(false, (Classe) e.getItem()); 
      } catch (Exception e1) { 


       /// HERE I WANT TO INVALIDATE THE SELECTION 
       /// Returning to the item selected before! 

      } 

     } 
    } 
+1

'我怎樣才能invalidade上的項偵聽選擇' - 從模型中刪除該項目。如果用戶看到一個項目並點擊它,只會發現他們無法選擇它。當然,用戶會嘗試多次,然後報告錯誤,因爲他們無法選擇該值。 – camickr

+0

是的,我可以做到這一點,沒想過,謝謝;) – TiagoM

回答

1

我怎麼能invalidade上的項偵聽選擇?在項目偵聽器中進行新的 選擇?這不是一個無限循環嗎? :○

  • JComboBox刪除ItemListener,然後調用JComboBox.setSelectedIndex(-1),加ItemListenerJComboBo X(標準和良好的practicies)

  • 創建一個附加監聽器2名無效(標準和良好的practicies) ,在第二個刪除聆聽者

  • 不換行if(e.getStateChange() == ItemEvent.DESELECTED)裏面的boolean原因,以阻止代碼執行unti LL復位狀態結束

  • 使用if - elseif(e.getStateChange() == ItemEvent.DESELECTED){ .... } else { ... }

+0

感謝您的回答,我會嘗試這個;) – TiagoM

+0

不客氣 – mKorbel