Я кодировал приложение, используя IDE Netbeans с JavaFX на моем ПК с Windows и библиотеку дизайна материалов JFoenix для элементов пользовательского интерфейса.Узнав, что JavaFX больше не поддерживается Oracle во встроенных JDK по умолчанию, я установил OpenJFX с менеджером пакетов по умолчанию (apt-get install openjfx).Приложение запускается как положено, но элементы пользовательского интерфейса ведут себя очень медленно.При нажатии на кнопку анимация отображается только частично, а затем застревает перед сменой сцены.Эти проблемы появляются только при работе на Pi.
Взаимодействие пользовательского интерфейса выполняется в контроллере, который затем отправляет обратно в основной поток пользовательского интерфейса.
Код в контроллере выглядит следующим образом:
@FXML
public void btnStart(ActionEvent e) {
main.goToEntry();
}
Код в основном потоке:
public void goToEntry() {
try {
PPentryController entry = (PPentryController) replaceSceneContent("views/PPentry.fxml");
entry.setMain(this);
} catch (Exception ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
private Initializable replaceSceneContent(String fxml) throws Exception {
FXMLLoader loader = new FXMLLoader();
InputStream in = Main.class.getResourceAsStream(fxml);
loader.setBuilderFactory(new JavaFXBuilderFactory());
loader.setLocation(Main.class.getResource(fxml));
Parent page;
try {
page = loader.load(in);
} finally {
in.close();
}
Scene scene = new Scene(page);
stage.setScene(scene);
stage.setResizable(false);
return (Initializable) loader.getController();
}
Есть ли способ исправить эти проблемы с производительностью?Будет ли выполнение replaceSceneContent () в отдельном потоке идеей прекратить замораживание основного потока пользовательского интерфейса при смене сцен?