JavaFX:NullPointerException通过在同一控制器的另一个窗口(fxml)中将文本设置为textarea

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

我有两个fxml文件,LayoutGUI.fxml(主窗口)和LayoutError.fxml(只有一个有两个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");
}

控制器是在error.fxml和textarea的have Id中定义的

实际上,两个FXML文件的控制器并不相同;每一个都有自己的控制器实例——它们恰好都是同一类的实例。这几乎总是一个坏主意;您应该为每个FXML文件创建不同的控制器类。