Передача ObservableList javaFX - PullRequest
0 голосов
/ 13 июня 2018

это мой класс контроллера, этот класс содержит методы для добавления, редактирования и удаления задачи из ArrayList и получения для ObservableList.

    public class taskController {
       @FXML  private Button addButton;       
       @FXML  private DatePicker datePicker = new DatePicker();
       @FXML  private TextField descriptionTextField = new TextField();
              private List<task> taskList= new ArrayList<task>();

    public void initialize() {
         datePicker.setValue(LocalDate.now());

    public taskController() {
    }

    public void showAddTask() throws IOException {
        Stage stage = new Stage();
        AnchorPane taskLayout;
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(taskController.class.getResource("addTask.fxml"));
        taskLayout = loader.load();
        Scene scene = new Scene(taskLayout);
        stage.setScene(scene);
        stage.show();

    }

   @FXML private void addTask() throws IOException, InterruptedException {
    this.taskList.add(new task(descriptionTextField.getText(),datePicker.getValue().getYear(),datePicker.getValue().getMonthValue(),datePicker.getValue().getDayOfMonth()));
    }

public ObservableList<task> getTaskListView() {
    return FXCollections.observableArrayList(this.taskList);
}

Когда я получаю ObservableList из класса Mainя получаю эту ошибку.

`Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at view.taskController.getTaskListView(taskController.java:93)
at Main.showTask(Main.java:49)
at Main.updateButton(Main.java:61)`

Это мой основной класс:

    public class Main extends Application {
          private taskController taskController = new taskController();       
          private feedController feedController = new feedController();
          private Stage primaryStage;
    @FXML private StackPane taskStackPane = new StackPane();
    @FXML private StackPane newsStackPane = new StackPane();
    @FXML private ListView<task> taskListView;
    @FXML private ListView<Calls> callList;

    public void initialize() {
        this.primaryStage = new Stage();
        showNews();
    }

    public void start(Stage primaryStage) throws IOException {
        VBox mainLayout;
        this.primaryStage = primaryStage;
        this.primaryStage.setTitle("App POO");
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(Main.class.getResource("assistant.fxml"));
        mainLayout = loader.load();
        Scene scene = new Scene(mainLayout);
        primaryStage.setScene(scene);
        primaryStage.show();    
    }

          private void showNews() {
              newsStackPane.getChildren().add(feedController.generateObservableNews());         
          }
     private void showTask() {
         taskListView = new ListView<>();
         taskListView.setItems(this.taskController.getTaskListView());   
         taskStackPane.getChildren().add(taskListView);

     }

     public void newTaskButton() throws IOException {
            this.taskController.showAddTask();

        }

Я не понимаю, где проблема, объекты хорошо созданы (думаю, что так), но taskListтеряется.

...