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。有什么想法吗?我被难住了。
最佳答案
使用它来检索所选项目..
((JComboBox)event.getSource()).getSelectedItem();
编辑:应该是 ((JComboBox<Integer>)event.getSource()).getSelectedItem();
当您使用泛型时。 "is"这将出现在您的事件方法中。
编辑 2:您收到警告是因为我们无法确定 JComboBox 是否应该具有通用参数。编译器发出此警告是因为它认为进行此类转换不安全。
@SuppressWarnings("unchecked")
((JComboBox<Integer>)event.getSource()).getSelectedItem();
关于java - 打印错误的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9696984/