JavaFX Scene Builder - можно ли его использовать с JFXPanel в Swing

Я использую JavaFX в приложении Swing с JFXPanel. Я кодирую JavaFX UI вручную, с помощью CSS-файлов. Я использую NetBeans 8.1.

Мне интересно, в этом случае, могу ли я использовать JavaFX Scene Builder для генерации пользовательского интерфейса? AFAIK, вывод - файл FXML, который представляет компоненты пользовательского интерфейса. Это совместимо с JFXPanel способ использования JavaFX?

Спасибо!

1 ответ

Решение

Если вы хотите управлять JFXPanel сам, и компоненты Swing, в Scene Builder, тогда краткий ответ "Нет".

С чисто практической точки зрения SceneBuilder не поддерживает компоненты Swing, что вы и собираетесь добавить в свой JFXPanel,

Другая проблема связана с потоками. Scene Builder просто генерирует FXML. FXML загружается FXMLLoader через одну из своих load(...) методы. Этот метод обязательно должен выполняться в одном потоке. Если вы смешиваете компоненты Swing и компоненты JavaFX, вы должны соответствующим образом управлять потоками, как описано в JFXPanel документация Поскольку у вас нет возможности рассказать FXMLLoader какие части FXML обрабатывать в потоке приложений JavaFX, а какие обрабатывать в потоке диспетчеризации событий AWT, невозможно загрузить файл FXML, описывающий сочетание компонентов Swing и JavaFX, которые подчиняются правилам потоков обоих инструментариев,

Очевидно, вы можете использовать Scene Builder только для управления содержимым JFXPanel; это идентично "регулярному" использованию Scene Builder. Опять же, все, что делает Scene Builder - это генерирует FXML, а FXML - это просто описание того, какие объекты создавать и как они связаны друг с другом. Так что вы можете просто сделать

private JFXPanel jfxPanel ;

// build Swing components, initialize jfxPanel, etc

// run on FX Application Thread:
private void initFX() {

    FXMLLoader loader = new FXMLLoader(getClass().getResource("/path/to/fxml/file"));
    Parent root = loader.load();
    Scene scene = new Scene(root);
    jfxPanel.setScene(scene);
}
Другие вопросы по тегам