为什么TrayIcon不接收鼠标事件?

时间:2016-10-19 18:16:07

标签: java

我正在尝试在开源项目中修复损坏的托盘图标。我几乎没有使用Java的GUI经验,我迷路了。我会很感激任何提示。

我在KDE中测试它,显示托盘图标并正确更改状态(图像),但标题错误(总是使用JEmbeddedFrame,尽管使用正确的字符串调用了事实方法)并且没有触发任何点击事件。

        trayIcon.addActionListener(new ActionListener() {

            // this is never called :(
            public void actionPerformed(final ActionEvent event) { 
                if (!mainFrame.isVisible()) {
                    mainFrame.setVisible(true);
                }

                mainFrame.setState(JFrame.NORMAL);
                mainFrame.requestFocus();
            }

        });

我甚至走进TrayIcon课程,发现只有鼠标进入/离开事件才开始被触发,但从不按,释放或点击。这是JRE中的错误还是我错过了什么?

问题是:如何修复托盘图标以在KDE中接收鼠标事件(主要是单击一个)?

我的Java版本是Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode),KDE是5.5.5(Kubuntu LTS)。

代码:https://github.com/mnn/baralga/blob/master/baralga-core/src/main/java/org/remast/baralga/gui/TrayIcon.java#L68

1 个答案:

答案 0 :(得分:0)

Doc of JDK7 说它不支持它并且我已经在 J​​DK8 中进行了测试,但仍然无法正常工作。但是 JDK11 并没有明确说这样的话。