Панель меню Java-FX в JFrame/JFXPanel: первый щелчок не распознан

Я хочу разместить JavaFX MenuBar поверх JFrame (Netbeans RCP). Поэтому я поместил JFXPanel на JFrame и сохранил FX Menubar над этим. Но всякий раз, когда я нажимаю на Меню (когда оно не сфокусировано), первый щелчок не работает. Меню отображается только после того, как я дважды щелкну.

[Ответ / Обход предоставляется в первом комментарии]

1 ответ

Ваша сцена JavaFX не имеет фокуса, пока вы не нажмете первый раз. Это происходит главным образом потому, что цикл рендеринга JavaFX является совершенно отдельным потоком от цикла рендеринга Swing, используемого базовым RCP NetBeans. JFXPanel только облегчает синхронизацию рендеринга и компоновки между потоками, а не передачей событий. Обычно это можно исправить, добавив запросы фокуса к сцене JavaFX, обычно на самом высоком уровне. Попробуйте добавить что-то вроде:

sceneRoot.setOnMouseEntered(event -> {
     sceneRoot.requestFocus();
});

Где sceneRoot - один из ваших контейнеров JavaFX самого высокого уровня... как пограничная панель или что-то еще.

Другие вопросы по тегам