调试Java Swing应用程序导致计算机冻结

3
我在XUbuntu上使用Eclipse2018-12开发Java/Swing桌面应用程序。在调试时,遇到了一个问题。当Eclipse在addItemListener事件达到JComboBox的断点时,所有的都会冻结,包括计算机......
我以为这与Java安装和调试配置有关,所以我尝试更改使用的JRE版本,但没有任何变化。
以下是代码:
JComboBox<ComboItem> res = new JComboBox<ComboItem>();
        res.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent event) {
                if (event.getStateChange() == ItemEvent.SELECTED && peopleCombo != null) {
                                           //do things
                    }
                }
            }    
        });
        return res; 

这是Java版本。
java --version
openjdk 11.0.2 2019-01-15
OpenJDK Runtime Environment (build 11.0.2+9-Ubuntu-3ubuntu118.04.3)
OpenJDK 64-Bit Server VM (build 11.0.2+9-Ubuntu-3ubuntu118.04.3, mixed mode, sharing)

我应该更改这个事件吗?还是使用的Java版本?

谢谢你的帮助,

Baptiste


请发布[mcve]。我发现[mcve]是一种非常有用的技术。它不仅使帮助变得更容易,还是一个强大的调试工具。在准备[mcve]的过程中,很可能会找到问题所在。 - undefined
对于那些遇到这个问题的人:在调试配置中有这个参数。-Dsun.awt.disablegrab=true - undefined
考虑自己回答你的问题。 - undefined
1个回答

5
如果您遇到这个问题,请在调试配置中添加此参数:

-Dsun.awt.disablegrab=true

另外,您还可以设置环境变量,例如export _JAVA_OPTIONS='-Dsun.awt.disablegrab=true' - undefined
我以为这是不可避免的事情,就像无法在任何程序中打开菜单、上下文菜单或组合框时进行截屏一样(除非使用截屏应用并设置延迟选项)。很高兴有人找到了一个解决办法,至少对于Java程序来说。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接