我有一个JavaFX应用程序,它有几个基于相同泛型类型的元素(一个ListView,两个ChoiceBox‘’es)。
@FXML private ListView<Department> departmentList;
@FXML private ChoiceBox<Department> employeeAddDepartment;
@FXML private ChoiceBox<Department> employeeEditDepartment;我用一个乳房填满它们。清单:
List<Department> ds = db.getDepartmentList();
ObservableList<Department> ds1 = FXCollections.observableArrayList(ds);
departmentList.setItems(ds1);
employeeAddDepartment.setItems(ds1);
employeeEditDepartment.setItems(ds1);问题是,当您将一个元素添加到一个元素(例如,departmentList)时
departmentList.getItems().add(dep);,它也会自动添加到选择框中,您可以在listview和两个选择框中获得3个重复项。为什么会发生这种事?我试着看胸部。列表文档,但没有找到任何相关的,也搜索堆栈溢出。我试图向Employee类添加等于/hashCode方法,但看起来它不影响它。
更奇怪的是,有时这种同步停止工作。就像上一次启动它时一样,但是今天您根本看不到将项目添加到选择框中(如果您只向其中一个元素添加元素以防止重复)。因此,您尝试修改您的代码,并尝试添加元素到选择框,如果他们今天没有同步,因为一些原因。接下来,启动应用程序并再次看到3个重复项。您恢复了代码,现在您的应用程序就像昨天一样工作。听起来很奇怪,但它的工作原理是这样的。
因此,问题是为什么这种情况会发生/不会随机发生,以及如何禁用/启用它以确保它将按预期的方式运行?
发布于 2016-01-08 16:30:26
这是因为这三个组件共享相同的列表。这样创建它:
List<Department> ds = db.getDepartmentList();
departmentList.getItems().addAll(ds);
employeeAddDepartment.getItems().addAll(ds);
employeeEditDepartment.getItems().addAll(ds);https://stackoverflow.com/questions/34681585
复制相似问题