java - ItemListener println 双输出

标签 java swing println itemlistener

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

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

最佳答案

由于取消选择一项并选择另一项,ItemListener 将触发两次。考虑使用 ActionListener。

请注意,您不应该使用 ==!= 来比较字符串。请改用 equals(...)equalsIgnoreCase(...) 方法。了解 == 检查两个对象是否相同,这不是您感兴趣的。另一方面,方法检查两个字符串是否相同字符的顺序相同,这就是这里最重要的。所以而不是

if (jbox.getSelectedItem() == string[x]) {

if (jbox.getSelectedItem().equals(string[x])) {

关于java - ItemListener println 双输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28126548/

相关文章:

java - 如何将Java对象转换为XML字符串,反过来将XML转换为Java对象?

java - 将对象的 ArrayList 转换为 String,并且 CVS 文件中该字符串的开头和结尾不包含引号字符 ""

java - 检测点击不起作用

Java2d : Set gradient for a lines

java - 如何在 Java 的 Scanner 实用程序中将输入放在下一行

java - Tomcat 应用程序不会通过 OSX 上的 intellij 进入调试

java - Swig C++ 到 Java UnsatisfiedLinkError

java - jTable添加多行

ios - 物理世界.bodyAlongRayStart()创建幻影println(读取 'Chance')-覆盖println函数?

java - 前面有零的整数是什么意思,我该如何打印它?