JavaFX没有扩展Application类

时间:2017-07-30 03:35:02

标签: java oop javafx extends

当我们创建一个javafx应用程序时,我们通常会扩展Application类。

public class Myjavafx extends Application{
    public static void main(String[] args) {
        launch(args);
    }
    @Override
    public void start(Stage primaryStage){
        Button btn = new Button();
        btn.setText("click me");

        BorderPane pane = new BorderPane();
        pane.setCenter(btn);

        Scene scene = new Scene(pane, 300,250);

        primaryStage.setScene(scene);
        primaryStage.setTitle("my app");
        primaryStage.show();
    }
}

但是我可以不延长Application类吗? 我试图创建javafx应用程序而不扩展它。

public class Myjavafx{
    public static void main(String[] args) {
        Application myapp = new Application(){
            @Override
            public void start(Stage primaryStage){
                Button btn = new Button();
                btn.setText("click me");

                BorderPane pane = new BorderPane();
                pane.setCenter(btn);

                Scene scene = new Scene(pane, 300,250);

                primaryStage.setScene(scene);
                primaryStage.setTitle("my app");
                primaryStage.show();
            }
        };
        myapp.launch(args);
    }
}

但结果是错误

class Myjavafxis not a subclass of javafx.application.Application

是否有必要扩展Application类?或者我做错了。

1 个答案:

答案 0 :(得分:1)

请注意,您已经通过创建匿名内部类来扩展Application。但是,JavaFX要求您从命名类扩展Application。这是因为launch()static方法,它通过反射创建Application实例。你在这里打launch()的方式隐藏了这个事实。最好拨打Application.launch()而不是myapp.launch(),因为这样可以明确launch()static