События не сработали в меню - PullRequest
0 голосов
/ 04 мая 2020

Я хочу создать плагин для трансляции приложения на основе Eclipse. Для запуска перевода GUI я использовал двойной щелчок для ярлыков и элементов управления, подобных этому. Однако для меню я не могу использовать двойной щелчок, так как меню закрывается при первом щелчке, но щелчок мышью + alt / control / что бы то ни было невозможно, поскольку меню не получает никаких событий. Та же проблема существует для ключевых событий любого типа.

Этот пример показывает проблему:

    public static void main(String[] args) {
        final Display display = new Display();
        display.addFilter(SWT.KeyUp, e -> System.out.println(e.keyCode));
        display.addFilter(SWT.MouseDoubleClick, e -> System.out.println("MouseDoubleClick"));
        display.addFilter(SWT.MouseUp, e -> System.out.println("MouseUp"));

        final Shell shell = new Shell(display);
        shell.setText("Key Up Example");
        shell.setSize(300, 200);


        final Menu menuBar = new Menu(shell, SWT.BAR);
        final MenuItem fileMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
        fileMenuHeader.setText("&File");

        final Menu fileMenu = new Menu(shell, SWT.DROP_DOWN);
        fileMenuHeader.setMenu(fileMenu);

        final MenuItem fileSaveItem = new MenuItem(fileMenu, SWT.PUSH);
        fileSaveItem.setText("&Save");

        final MenuItem helpMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
        helpMenuHeader.setText("&Help");

        final Menu helpMenu = new Menu(shell, SWT.DROP_DOWN);
        helpMenuHeader.setMenu(helpMenu);

        final MenuItem helpGetHelpItem = new MenuItem(helpMenu, SWT.PUSH);
        helpGetHelpItem.setText("&Get Help");

        shell.setMenuBar(menuBar);

        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        display.dispose();
    }

Вы можете нажать и ввести в окне, и консоль покажет события - но когда меню открыто, даже события пожара мемотики.

Я обнаружил Ошибка 281433 с той же проблемой, но она застряла в состоянии "NEW".

Примечание: Поскольку я слушаю глобальные события, просто добавить слушателей в меню не получится. Это также не работает, ни MenuItem, ни Menu не запускают никаких событий.

Есть ли способ прослушивания каких-либо глобальных событий при открытом меню?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...