当我们创建一个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类?或者我做错了。
答案 0 :(得分:1)
请注意,您已经通过创建匿名内部类来扩展Application
。但是,JavaFX要求您从命名类扩展Application
。这是因为launch()
是static
方法,它通过反射创建Application
实例。你在这里打launch()
的方式隐藏了这个事实。最好拨打Application.launch()
而不是myapp.launch()
,因为这样可以明确launch()
是static
。