2015-01-24 2 views
2
jbox.addItemListener(new ItemListener() { 
     @Override 
     public void itemStateChanged(ItemEvent e) { 
      for (int x = 0; x < string.length; x++) { 
       if (jbox.getSelectedItem() == string[x]) { 
        System.out.println(string[x]); 
       }}}}); 

Когда я запускаю это, он печатает дважды. Что я сделал не так? (извините за мой плохой английский)ItemListener println двойной выход

+0

Не забывайте использовать возможности поиска этого сайта. Например [этот поиск] (http://stackoverflow.com/search?q=%5Bjava%5D+%5Bswing%5D+itemlistener+twice) поможет вам получить полезные результаты. –

ответ

2

ItemListener отключится дважды, поскольку один элемент отменен, а другой выбран. Рассмотрите возможность использования ActionListener.

Обратите внимание, что вы не должны сравнивать строки с использованием == или !=. Вместо этого используйте метод equals(...) или equalsIgnoreCase(...). Поймите, что == проверяет, являются ли объекты те же, что вас не интересуют. Методы, с другой стороны, проверяют, имеют ли две строки одни и те же символы в одном порядке, и это имеет значение здесь. Таким образом, вместо

if (jbox.getSelectedItem() == string[x]) { 

сделать

if (jbox.getSelectedItem().equals(string[x])) { 
+0

Спасибо. Он печатает нормально сейчас. – roboticonx8

Смежные вопросы