没有扩展 Application 类的 JavaFX

标签 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 类?还是我做错了。

最佳答案

请注意,您已经通过创建匿名内部类扩展了 Application。但是,JavaFX 要求您从命名类扩展 Application。这是因为 launch() 是一个 static 方法,它通过反射创建 Application 实例。您在此处调用 launch() 的方式隐藏了这一事实。最好调用 Application.launch() 而不是 myapp.launch() 因为这清楚地表明 launch()静态

关于没有扩展 Application 类的 JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45396095/

相关文章:

java - 嵌套 JSTL 变量名?是否可以?

java - 使用 Spring 配置 SOAP 处理程序

c# - 对于多条消息和成功/失败,是否有替代通知模式的方法?

php - 我们如何将 php 页面属性值发送到 php 类方法

java - JCEF 与 JavaFX fatal error

java - 如何通过复杂对象的代码覆盖 JavaFX css

java - EJB 的访问控制列表 (ACL)

java - 匿名类错误

java - 我应该使用这样的界面吗?

java - Scenebuilder安装后显示错误