Я делаю программу, которая добавляет события в список, но когда я добавляю событие, он не обновляет мой список после закрытия окна addEvent, вот сенарио:
1 - это первое окно :
2 - затем я нажимаю кнопку (+), чтобы добавить событие в окне addEvent:
здесь я добавляю тест "пункт, когда я нажимаю ОК, чтобы проверить мой код
3 - теперь я нажимаю кнопку" ОК "и возвращаюсь в главное окно:
теперь в моем списке ничего не меняется, и это не показывает, что «тестовый» элемент, но этот «элемент» уже в списке и успешно добавлен.
вот весь код:
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception{
FXMLLoader loader = new FXMLLoader(getClass().getResource("main_layout.fxml"));
Parent root = (Parent) loader.load();
primaryStage.setTitle("Goba To Do List");
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.setResizable(false);
primaryStage.show();
}
@FXML
private ListView<String> LeftSideListId; // this names just for testing
@FXML
private ListView<String> RightSideListId; // this names just for testing
@FXML
private Button AddEvent;
public void initialize() throws Exception {
System.out.println("init");
ObservableList<String>eventsNamesList=FXCollections.observableArrayList(
"Daily Events","Custom Events","Completed Events");
LeftSideListId.setItems(eventsNamesList);
ObservableList<String>eventsList=FXCollections.observableArrayList(
"item1","item2","item3");
RightSideListId.setItems(eventsList);
AddEvent.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
AddButtonPressed();
}
});
}
void AddButtonPressed() {
addEventController.DisplayAddEventWindow();
}
public void DisplayAddEventWindow()
{
try {
Stage primaryStage = new Stage();
primaryStage.setTitle("Add Event");
Scene scene = new Scene(AddEventScene);
primaryStage.initModality(Modality.APPLICATION_MODAL);
primaryStage.setScene(scene);
primaryStage.setResizable(false);
primaryStage.show();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void RefreshList() {
System.out.println("refresh");
RightSideListId.getItems().add("test");
System.out.println(RightSideListId.getItems()); // here i get [item1,item2,item3,test]
}
@FXML
private Button BtnOk;
@FXML
private Button BtnCancel;
public void initialize() throws Exception {
BtnOk.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
try {
BtnOkPressed();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
BtnCancel.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
BtnCancelPressed();
}
});
}
public void BtnCancelPressed() {
Stage stg= (Stage)BtnCancel.getScene().getWindow();
stg.close();
}
public void BtnOkPressed() throws Exception {
Stage stg= (Stage)BtnOk.getScene().getWindow();
stg.close();
FXMLLoader loader = new FXMLLoader(getClass().getResource("main_layout.fxml"));
Parent root = (Parent) loader.load();
MainController mainController=loader.getController();
mainController.RefreshList();
}
так что я тут не так сделал?
мой список обновляется нормально, если я не открывал windows, поэтому он обновляется только в том же окне ... idk, почему