Java 打印错误的东西 for(int i=1;i
System.out.println(“所选:“+ItemEvent.Selected”) 这不是您在此处打印的选定元素,而是一些内部事件类型代码(用于将其标记为选择事件)。它是由ItemEvent类定义的常量值Java 打印错误的东西 for(int i=1;i,java,jcombobox,Java,Jcombobox,System.out.println(“所选:“+ItemEvent.Selected”) 这不是您在此处打印的选定元素,而是一些内部事件类型代码(用于将其标记为选择事件)。它是由ItemEvent类定义的常量值 请尝试。该选项将返回所选项目。使用此选项检索所选项目 for (int i = 1; i <= 100; ++i) { ageList.add(i);
请尝试。该选项将返回所选项目。使用此选项检索所选项目
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);
}
}
}
编辑:应该是((JComboBox)event.getSource()).getSelectedItem();
,因为您正在使用泛型。而“是”将出现在事件方法中
编辑2:您收到警告是因为我们无法确定JComboBox是否应具有泛型参数。编译器引发此警告是因为它认为执行此类强制转换不安全
((JComboBox)event.getSource()).getSelectedItem();
@SuppressWarnings(“未选中”)
((JComboBox)event.getSource()).getSelectedItem();
ItemEvent.SELECTED是一个常量,表示“已选择某个项目”的标志。您需要使用ItemEvent对象的其他方法提取原始组合框并找到所选项目…请检查此处:
ItemEvent.SELECTED是一个常量,下面是ItemEvent.java的源代码
@SuppressWarnings("unchecked")
((JComboBox<Integer>)event.getSource()).getSelectedItem();
首先,这将进入事件方法,对吗?当我这样做时,我得到一个错误:JComboBox是一个原始类型。对泛型类型JComboBox的引用应该参数化现在((JComboBox)event.getSource())带下划线。错误:类型安全:未选中从对象到JComboBox@Maydayfluffy:尝试添加@SuppressWarnings(“未选中”)在顶部抑制此警告…请参见编辑…另一个类型安全的选项是不调用
event.getSource
,而是将ageEntries
设置为final,并直接从其listener.System.out.println(event.getItem())引用它;是我从您的评论中得到的。但是,这会打印出我在上一个数字的基础上选择的新数字。因此它会打印出两个数字。首先是上一个数字,然后是新数字。为什么会这样?您确定您没有打印取消选择的事件吗?我不相信我是。System.out.println(event.getItem());是内部类ageListener中的所有内容。然后您还删除了if(event.getStateChange()==ItemEvent.SELECTED)
,它将打印所有事件,而不仅仅是选中的事件。这些事件已被删除,但问题仍然存在。
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;
......
}