Почему TrayIcon не получает события мыши?

#java

#java

Вопрос:

Я пытаюсь исправить сломанный значок в трее в проекте с открытым исходным кодом. У меня почти нет опыта работы с графическими интерфейсами на Java, я заблудился. Я был бы признателен за любые советы.

Я тестирую его в 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:

В документе JDK7 говорится, что он не поддерживает его и уже протестирован мной в JDK8, все еще не работает. Но JDK11 явно не говорит что-то подобное.

Комментарии:

1. Возможно, в java 7, который является документом Java, на который вы ссылались, но в более современных версиях, таких как 11, это больше не говорит об этом.

2. @RoddyoftheFrozenPeas не тестировал это там, к сожалению, в JDK8 это все еще не работает.

3. Вероятно, следует включить эту информацию в свой ответ. Прямо сейчас он просто говорит «это не работает», но это относится к определенным версиям.

4. @RoddyoftheFrozenPeas вы правы, спасибо за комментарий.