2013-06-01 3 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 выбор на пункт слушателя? Сделайте новый выбор внутри прослушивателя товаров? не будет ли это бесконечным циклом? : О

  • удалить ItemListener из JComboBox, а затем вызвать JComboBox.setSelectedIndex(-1), добавить ItemListener обратно в JComboBo х (стандартные и хорошие practicies)

  • создают две пустоты (стандартные и хорошие practicies) в одном надстройкой слушателя , во втором удалении прослушивателя

  • не обертывать if(e.getStateChange() == ItemEvent.DESELECTED) внутри boolean по причине, чтобы выполнить код блока, LL сбросить статус закончился

  • использование if - else для if(e.getStateChange() == ItemEvent.DESELECTED){ .... } else { ... }

+0

Спасибо за ваш ответ, я попробую это;) – TiagoM

+0

приветствуются – mKorbel