JavaFX:NullPointerException通过在同一控制器的另一个窗口(fxml)中将文本设置为textarea
我有两个fxml文件,LayoutGUI.fxml(主窗口)和LayoutError.fxml(只有一个有两个textarea和一个ok按钮的窗口)。两者都有相同的控制器。我想在LayoutError.fxml中显示发生的异常。但是如果我在控制器中使用textareas的setText(“”)方法,我会得到一个NullPointerException。如果我在控制器中的按钮单击操作中设置文本,则没有例外JavaFX:NullPointerException通过在同一控制器的另一个窗口(fxml)中将文本设置为textarea,javafx,nullpointerexception,window,fxml,Javafx,Nullpointerexception,Window,Fxml,我有两个fxml文件,LayoutGUI.fxml(主窗口)和LayoutError.fxml(只有一个有两个textarea和一个ok按钮的窗口)。两者都有相同的控制器。我想在LayoutError.fxml中显示发生的异常。但是如果我在控制器中使用textareas的setText(“”)方法,我会得到一个NullPointerException。如果我在控制器中的按钮单击操作中设置文本,则没有例外 public void showError(String headline,String e
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");
}
控制器是在error.fxml和textarea的have Id中定义的 实际上,两个FXML文件的控制器并不相同;每一个都有自己的控制器实例——它们恰好都是同一类的实例。这几乎总是一个坏主意;您应该为每个FXML文件创建不同的控制器类。