Java ItemListener println双输出 jbox.addItemListener(新的ItemListener(){ @凌驾 公共无效itemStateChanged(ItemEvent e){ 对于(int x=0;x

Java ItemListener println双输出 jbox.addItemListener(新的ItemListener(){ @凌驾 公共无效itemStateChanged(ItemEvent e){ 对于(int x=0;x,java,swing,println,itemlistener,Java,Swing,Println,Itemlistener,当我运行这个时,它会打印两次。 我做错了什么? (很抱歉我的英语不好)由于一个项目被取消选择,另一个项目被选择,ItemListener将跳闸两次。考虑使用ActualListInter。 但是请注意,您不应该使用==或来比较字符串=。请改用equals(…)或equalsIgnoreCase(…)方法。了解==检查两个对象是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这就是这里的问题所在。所以不是 jbox.addItemListener(new It

当我运行这个时,它会打印两次。 我做错了什么?
(很抱歉我的英语不好)

由于一个项目被取消选择,另一个项目被选择,ItemListener将跳闸两次。考虑使用ActualListInter。 但是请注意,您不应该使用
==
来比较字符串=。请改用
equals(…)
equalsIgnoreCase(…)
方法。了解
==
检查两个对象是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这就是这里的问题所在。所以不是

jbox.addItemListener(new ItemListener() {
        @Override
        public void itemStateChanged(ItemEvent e) {
            for (int x = 0; x < string.length; x++) {
                if (jbox.getSelectedItem() == string[x]) {
                    System.out.println(string[x]);
                }}}});


非常感谢。现在可以正常打印了。别忘了使用这个网站的搜索功能。例如,它会给你带来有益的结果。
if (jbox.getSelectedItem() == string[x]) {
if (jbox.getSelectedItem().equals(string[x])) {