如何从 java 代码启动 javafx 应用程序



在我的Java类中,我使用了

Chart.main(args) 

用参数启动我的 JavaFX 类。程序在javafx类中被阻止并且无法返回到我的java类的问题。

Chart.launch(args); 

我收到错误:

java.lang.runtimeException: 错误: 类图像不是javafx.application.Applicationsubclass

我找到了类似的例子,从java开始javafx但没有参数。

javafx.application.Application.launch(Chart.class);

感谢您的帮助。

采用Class参数的launch()方法也采用参数列表,因此您可以

Application.launch(Chart.class, args);

但请注意,在 JavaFX 应用程序退出之前,它是阻塞的launch()方法。因此,根据您要执行的操作,您可能需要从后台线程调用它,例如

new Thread(() -> Application.launch(Chart.class, args)).start();

这里有一个例子,你的Java代码是:

public class FXLauncher {
    public static void main(String[] args) {
        FXApplication application = new FXApplication();
        application.handleArgs(args);
        new Thread(application ).start();
    }
}

您的 JavaFx 应用程序将如下所示:

import javafx.application.Application;
import javafx.stage.Stage;
public class FXApplication extends Application implements Runnable  {
    public void handleArgs(String[] args){
        // handle java args
        System.out.println(args);
    }        
    @Override
    public void start(Stage stage) throws Exception {
        // your javafx code
    }
    @Override
    public void run(){
        launch();
    }   
}

最新更新