JavaFX-如何从不同阶段向ListView添加项?

JavaFX-如何从不同阶段向ListView添加项?,java,listview,javafx,Java,Listview,Javafx,如何从其他阶段(窗口)将项目添加到已存在的ListView中 基本上,我只想将文本从窗口2添加到窗口1中的ListView 提前谢谢 抱歉,我忘了这是我在控制器课程中学到的:(我是javafx的初学者) (下面我尝试向ListView添加一个字符串,但这不起作用……我不知道为什么) 公共类ClientGUIController实现可初始化{ @FXML私有文本usernameText; @FXML私有按钮取消按钮通知; @FXML私有文本字段newDateTitel,newDateJahr; @

如何从其他阶段(窗口)将项目添加到已存在的ListView中

基本上,我只想将文本从窗口2添加到窗口1中的ListView

提前谢谢

抱歉,我忘了这是我在控制器课程中学到的:(我是javafx的初学者)

(下面我尝试向ListView添加一个字符串,但这不起作用……我不知道为什么)

公共类ClientGUIController实现可初始化{
@FXML私有文本usernameText;
@FXML私有按钮取消按钮通知;
@FXML私有文本字段newDateTitel,newDateJahr;
@FXML私有文本区newDateNotiz;
@FXML私有组合框newDateTag、newDateMonat、newDateStunde、newDateMinute;
@FXML私有ListView终端ListView;
私有可观察列表终端=
FXCollections.observableArrayList();
private ObservableList listItems=FXCollections.observableArrayList(“在此处添加项目”);
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
}
公共文本getUsernameText(){
返回usernameText;
}
public void setUsernameText(字符串用户名){
this.usernameText.setText(用户名);
terminListView.setItems(listItems);
列表项。添加(“测试”);
}
public void newDate(){
阶段newDate=新阶段();
亲本根;
试一试{
root=fxmloader.load(getClass().getResource(“newDate.fxml”);
//FXMLLoader=新的FXMLLoader();
//root=(父)loader.load(getClass().getResource(“NewDate.fxml”).openStream());
}捕获(IOE异常){
e、 printStackTrace();
返回;
}
场景scenewdate=新场景(根);
//scenewdate.getStylesheets().add(getClass().getResource(“Style.css”).toExternalForm());
newDate.setTitle(“新终端”);
newDate.setScene(scenewdate);
newDate.show();
}
public void createNewDate()引发IOException{
//Termine meinTermin=new Termine(Integer.parseInt(newDateTag.getValue())、Integer.parseInt(newDateMonat.getValue())、Integer.parseInt(newDateJahr.getText())、newDateTitel.getText()、newDateNotiz.getText(),
//Integer.parseInt(newdatestude.getValue()),Integer.parseInt(newDateMinute.getValue());
//将项目添加到ListView

listItems.add(“test”);一种方法是将
listItems
传递给
newDate.fxml
的控制器,这样它就可以添加到该列表中。因此,假设
newDate.fxml
的控制器类是
NewDateController
,您可以执行以下操作:

public class NewDateController {

    private ObservableList<String> data ;

    public void setData(ObservableList<String> data) {
        this.data = data ;
    }

    // other code as before...

    // button handler:
    @FXML
    private void handleButtonPress() {
        data.addItem("test");
    }

}

请向我们展示您迄今为止所做的尝试…编辑了我的初始帖子,谢谢!您在
setUsernameText(…)中将
listItems
设置为
terminListView
的项目
method。您在哪里调用该方法?在显示gui之前,mainclass会调用该方法。通常,我会将listitems设置为initialize方法中terminListView的项。但是如果我这样做,第二个窗口也会调用initialize并抛出NullPointerException。您能显示该代码吗?您要告诉我的第二个阶段是哪个阶段ntion?我真的看不出你的代码和你的问题有什么关系。就是这样!我让它这样工作了!非常感谢你James_D!:)
public class NewDateController {

    private ObservableList<String> data ;

    public void setData(ObservableList<String> data) {
        this.data = data ;
    }

    // other code as before...

    // button handler:
    @FXML
    private void handleButtonPress() {
        data.addItem("test");
    }

}
public void newDate() {

    Stage newDate = new Stage();

    Parent root;
    try {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("newDate.fxml"));
        root = loader.load();
        NewDateController controller = loader.getController();
        controller.setData(listItems);

    } catch (IOException e) {
        e.printStackTrace();
        return;
    }
    Scene sceneNewDate = new Scene(root);

    newDate.setTitle("Neuer Termin");
    newDate.setScene(sceneNewDate);
    newDate.show();


}