[英]Exception in Application start method java.lang.reflect.InvocationTargetException [NO FXML]
[英]java.lang.reflect.InvocationTargetException when calling method from FXML
我正在一个相当简单的程序上工作,但是我无法弄清楚这里出了什么问题。 这是我的主班:
public class Main extends Application {
private QualityList ql;
private QualityController controller;
private Stage primaryStage;
@Override
public void start(Stage stage) throws Exception {
primaryStage = stage;
Parent root = FXMLLoader.load(getClass().getResource("/controller/QualityWindow.fxml"));
primaryStage.setTitle("Kwaliteiten V1.0");
primaryStage.setScene(new Scene(root, 1250, 800));
primaryStage.show();
ql = new QualityList();
controller = new QualityController();
controller.initController(ql);
controller.setStage(primaryStage);
ql.addObserver(controller);
}
public static void main(String[] args) {
launch(args);
}
}
这是我的控制器类(我遇到麻烦的部分):
private QualityList ql;
private Stage stage;
private DBClass connect;
public void initController(QualityList ql){
this.ql=ql;
this.connect = new DBClass();
readData();
initialiseTable();
}
.
.
.
@FXML
void printData(ActionEvent event){
ql.printData();
}
我遇到的问题是,通过带有事件的接口调用方法printData时,它将导致java.lang.reflect.InvocationTargetException
。
但是,例如从initController方法调用相同的方法时,它将完全按计划运行。
仅当在主类中创建了原始ql对象并将其传递给控制器时,该问题才会出现。 如果我在控制器本身中创建ql对象,就没有问题,但是我无法观察到ql对象。
我没有初始化控制器。 这是最丰富的方法:
@Override
public void start(Stage primaryStage) throws Exception {
ql = new QualityList();
this.primaryStage = primaryStage;
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/controller/QualityWindow.fxml"));
Parent root = loader.load();
QualityController controller = loader.getController();
//Parent root = FXMLLoader.load(getClass().getResource("/controller/QualityWindow.fxml"));
primaryStage.setScene(new Scene(root, 1250, 800));
primaryStage.setTitle("Kwaliteiten V1.0");
primaryStage.show();
controller.initController(ql);
ql.addObserver(controller);
}
public static void main(String[] args) {
launch(args);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.