Если вы хотите управлять самим и компонентами Swing, в Scene Builder короткий ответ - «Нет».
С чисто практической точки зрения SceneBuilder не поддерживает компоненты Swing, что вы собираетесь добавить в свой JFXPanel
.
Другая проблема связана с нарезкой резьбы. Scene Builder просто генерирует FXML. FXML загружается FXMLLoader
через один из его методов load(...)
. Этот метод обязательно должен выполняться в одном потоке. Если вы смешиваете компоненты Swing и компоненты JavaFX, вы должны должны управлять потоками соответствующим образом, как описано в JFXPanel
documentation. Поскольку вы не можете сообщить FXMLLoader
, какие части FXML обрабатывать в потоке приложений JavaFX и какие части обрабатывать в потоке Dispatch событий 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);
}
Поскольку приложение написано в Swing, это огромная и непростая задача для перехода на JavaFX. Следовательно, для недавно добавленного пользовательского интерфейса я начал писать в JavaFX, используя JFXPanel. С SceneBuilder можно ли включить только часть пользовательского интерфейса, который является недавно добавленным интерфейсом JavaFX? Если да, то мне не нужно разрабатывать компоненты JavaFX в code & css, что требует много времени. –
ОК, из вашего вопроса я понял, что вы хотите создать/отредактировать «JFXPanel» и другие компоненты Swing в Scene Builder. Если вы хотите использовать Scene Builder для содержимого 'JFXPanel', то, конечно же, вы можете это сделать: он точно такой же, как вы обычно его используете. –