2013-06-01 27 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