当我们创建一个javafx应用程序时,我们通常扩展Application类。JavaFX不扩展应用程序类
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();
}
}
但我可以做到这一点,而无需扩展应用程序类? 我试图创建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
是有必要扩展应用程序类?还是我做错了。
你在哪里声明'myapp'? –
查看新的答案。 –
'Application.launch()'通过反射创建应用程序类的新实例。一个匿名类用于创建一个单一的一个类的实例,而不用命名该类。由于您随后需要'Application.launch()'创建该类的另一个实例,因此使用匿名类并不是正确的方法。如果你喜欢,你可以创建一个命名的内部类(必须是公共的)。 –