javafx - 传递 ObservableList javaFX
问题描述
这是我的控制器类,该类包含从 ArrayList 中添加、编辑和删除任务的方法以及 ObservableList 的 getter。
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);
}
当我从 Main 类中获取 ObservableList 时,我得到了这个错误。
`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 正在丢失。
解决方案
推荐阅读
- html - React如何在状态更改时触发页面重新加载
- python - 导入 cv2 时 DLL 加载失败 没有足够的内存资源来处理此命令
- javascript - 如何获取上传图片的图片名称和大小
- javascript - 将动态参数传递给在 for 循环中使用 chrome.tabs.executeScript() 注入的内容脚本,并将参数值写入控制台
- huawei-mobile-services - AppGallery Connect服务集成时提示“miss client id”怎么办?
- unity3d - 统一的更新订单执行是否不变?
- javascript - 我想知道为什么我们使用第一个道具?.heading 和 in
import React from "react"; import Field from "sleek-ui/Field"; import {InputStyle, Heading, SubHeading, DisplayHeading} from "./style"; con
- php - 根据 Codeigniter 中的参与者数量获取价格值
- visual-studio - 如何通过自定义命令控制 Visual Studio 的扩展?
- python - infomap算法python中社区的颜色