Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打印错误的东西 for(int i=1;i_Java_Jcombobox - Fatal编程技术网

Java 打印错误的东西 for(int i=1;i

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);

System.out.println(“所选:“+ItemEvent.Selected”)

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


请尝试。该选项将返回所选项目。

使用此选项检索所选项目

                    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;

    ......
}