Raspberry Pi上的Laggy JavaFX-GUI

时间:2019-04-07 17:03:41

标签: java multithreading javafx raspberry-pi

我在Windows PC上使用带有JavaFX的Netbeans IDE和用于UI元素的材质设计库JFoenix编写了一个应用程序。在发现默认嵌入式JDK上Oracle不再支持JavaFX之后,我使用默认的程序包管理器(apt-get install openjfx)安装了OpenJFX。该应用程序按预期方式启动,但是UI元素表现得很慢。单击按钮时,动画仅部分显示,然后在更改场景前停滞。这些问题仅在Pi上运行时出现。

UI交互是在控制器中完成的,然后该控制器回发到主UI线程。

控制器中的代码如下:

@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()是否可以在更改场景时停止冻结主UI线程?

0 个答案:

没有答案