打印错误的东西

时间:2012-03-14 06:30:27

标签: java jcombobox

                    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 个答案:

答案 0 :(得分:4)

使用此功能检索所选项目..

 ((JComboBox)event.getSource()).getSelectedItem();
编辑:当您使用泛型时,应该是((JComboBox<Integer>)event.getSource()).getSelectedItem();。并且“是”这将进入您的事件方法。

编辑2:您收到警告,因为我们无法确定JComboBox是否应该具有Generic参数。编译器会发出此警告,因为它认为进行此类投射是不安全的。

@SuppressWarnings("unchecked") 
((JComboBox<Integer>)event.getSource()).getSelectedItem();

答案 1 :(得分:3)

  

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

这不是您在此处打印的选定元素,而只是一些内部事件类型代码(将此标记为选择事件)。它是由ItemEvent类定义的常量值。

试试event.getItem()。这应该返回所选项目。

答案 2 :(得分:0)

ItemEvent.SELECTED是一个常量,表示标记为“已选择项目”的标记。您需要使用ItemEvent对象的其他方法来提取原始组合框并找到所选项...

答案 3 :(得分:0)

点击此处: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;

    ......
}