Печать не ту вещь - PullRequest
       29

Печать не ту вещь

0 голосов
/ 14 марта 2012
                    for (int i = 1; i <= 100; ++i) {
                        ageList.add(i);
                    }

                    DefaultComboBoxModel<Integer> modelAge = new DefaultComboBoxModel<Integer>();
                    for (Integer i : ageList) {
                        modelAge.addElement(i);
                    }

                    JComboBox<Integer> ageEntries = new JComboBox<Integer>();
                    ageEntries.setModel(modelAge);

                    ageEntries.addItemListener(new ageListener());

  class ageListener implements ItemListener{
    public void itemStateChanged(ItemEvent event) {
         if (event.getStateChange() == ItemEvent.SELECTED) {
                System.out.println("Selected:" + ItemEvent.SELECTED);
            }

    }
  }

Проблема: когда я выбираю возраст, он печатает 1 независимо от возраста, который я выбрал. Например, если я выберу число 7, оно напечатает 1. Если я выберу 56, оно напечатает 1. Есть идеи? Я в тупике.

Ответы [ 4 ]

4 голосов
/ 14 марта 2012

Используйте это, чтобы получить выбранный элемент ..

 ((JComboBox)event.getSource()).getSelectedItem();

РЕДАКТИРОВАТЬ: должно быть ((JComboBox<Integer>)event.getSource()).getSelectedItem();, так как вы используете дженерики. И «Да» это придет в вашем методе события.

РЕДАКТИРОВАТЬ 2: вы получаете предупреждение, потому что мы не можем определить, должен ли JComboBox иметь параметр Generic. Компилятор выдает это предупреждение, потому что считает небезопасным делать такое приведение.

@SuppressWarnings("unchecked") 
((JComboBox<Integer>)event.getSource()).getSelectedItem();
3 голосов
/ 14 марта 2012

System.out.println ("Selected:" + ItemEvent.SELECTED);

Это не выбранный элемент, который вы печатаете здесь, а только некоторый внутренний код типа события (пометить это как событие выбора).Это константа значение, определенное классом ItemEvent.

Try event.getItem () .Это должно вернуть выбранный элемент.

0 голосов
/ 14 марта 2012

проверьте здесь: http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/event/ItemEvent.html#SELECTED

ItemEvent.SELECTED - это константа, ниже - источник ItemEvent.java.

package java.awt.event;

public class ItemEvent extends AWTEvent {

    ......

    /**
     * This state-change value indicates that an item was selected.
     */
    public static final int SELECTED = 1;

    ......
}
0 голосов
/ 14 марта 2012

ItemEvent.SELECTED - это константа, представляющая флаг, который говорит «элемент был выбран».Вам нужно использовать другие методы объекта ItemEvent, чтобы извлечь исходное поле со списком и найти выбранный элемент ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...