我有2个fxml文件,LayoutGUI.fxml(主窗口)和LayoutError.fxml(只有一个带有2个textarea的窗口和一个ok按钮)。两者都有相同的控制器。我想在LayoutError.fxml中显示一个已发生的异常。但是如果我在控制器中使用textareas的setText(“”)方法,我会得到一个NullPointerException。如果我在控制器中的按钮单击操作中设置文本,则没有例外。
public void showError(String headline,String errorTxt,String stackTrace)
{
Parent root;
try {
root = FXMLLoader.load(getClass().getClassLoader().getResource("application/view/LayoutError.fxml"));
Stage stage = new Stage();
stage.setTitle("Error Message!");
stage.setScene(new Scene(root, 450,300));
stage.show();
error_txtarea_Stacktrace.setText(stackTrace);
error_txtarea_error.setText(errorTxt);
} catch (IOException e) {
e.printStackTrace();
}
}
如果我在这里设置文字,则没有例外。是否可以在此时未初始化组件,或者为什么我可以在按钮单击方法中设置文本而不是如果我显示窗口?
@FXML
public void errorButtonOKAction(ActionEvent event)
{
// get a handle to the stage and close it
//Stage stage = (Stage) error_btnOK.getScene().getWindow();
//stage.close();
error_txtarea_Stacktrace.setText("dasds");
error_txtarea_error.setText("dsds");
}
Controller在error.fxml中定义,textarea有Id。