import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class Calc {
public class Gui extends Application{
@Override
public void start(Stage stage){
TextField mainText = new TextField();
BorderPane pane = new BorderPane();
pane.setTop(mainText);
Scene scene = new Scene(pane);
stage.setTitle("Calculator");
stage.setScene(scene);
stage.show();
}
}
public static void main(String args[]){
Application.launch(args);
}
}
当我尝试执行该程序时,我收到此错误:
Exception in thread "main" java.lang.RuntimeException: Error: class Calc is not a subclass of javafx.application.Application
at javafx.application.Application.launch(Application.java:211)
at Calc.main(Calc.java:56)
当导入的范围超过Calc类时,我不明白它不是子类,这意味着那些子类应该能够使用它们。
答案 0 :(得分:6)
当导入的范围超过Calc类时,我不明白它是如何不是子类的,这意味着它们的子类应该能够使用它们。
子类化和导入完全不同的东西。它抱怨你的Calc
类声明为:
public class Calc
而不是
public class Calc extends Application
现在您的Gui
类是Application
的子类 - 但正如您从错误消息中看到的那样,JavaFX并未尝试启动Gui
,而是尝试启动Calc
1}}。
就我个人而言,我建议删除额外的课程,只是 Calc
Application
main
start
方法(用于启动)和Gui
方法。或者,您可以明确指定public static void main(String args[]){
Application.launch(Gui.class, args);
}
类:
Gui
...但是你也想要制作static
类Calc
,这样它才能真正拥有无参数构造函数。 (目前您需要一个Gui
的实例才能创建{{1}}的实例,因为它是一个内部类。)