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.任何想法?我很难过。
答案 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;
......
}