如何从带有默认构造函数的另一个类中启动javafx应用程序?

Muh*_*ais 1 java javafx java-8 java-threads

我有一个主班

public class Main{
    public static void main(String[] args) {
        Gui gui = new Gui();
    }
}
Run Code Online (Sandbox Code Playgroud)

那我再上课Gui

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;

public class Gui extends Application{
    public Gui() {
        Application.launch();
    }
    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("");
        FlowPane flowLayout= new FlowPane();
        Scene scene = new Scene(flowLayout,200,200);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

我也想通过创建Gui实例并使用默认构造函数从Main类启动Javafx Application。我该怎么做?

小智 5

不要将launch方法调用放在构造函数中。这是一个阻塞方法调用,直到应用程序退出后才返回。

GUI默认构造函数将由方法调用,Application.launch并且您不需要(也不能)将实例传递给应用程序启动器。如果您确实要从main另一个类的方法中调用,则可以Application.launch(Gui.class, args)直接使用。