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