首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于JavaFX ObservableList的元素怪异行为

基于JavaFX ObservableList的元素怪异行为
EN

Stack Overflow用户
提问于 2016-01-08 16:22:18
回答 1查看 108关注 0票数 0

我有一个JavaFX应用程序,它有几个基于相同泛型类型的元素(一个ListView,两个ChoiceBox‘’es)。

代码语言:javascript
运行
复制
@FXML private ListView<Department> departmentList;
@FXML private ChoiceBox<Department> employeeAddDepartment;
@FXML private ChoiceBox<Department> employeeEditDepartment;

我用一个乳房填满它们。清单:

代码语言:javascript
运行
复制
List<Department> ds = db.getDepartmentList();
ObservableList<Department> ds1 = FXCollections.observableArrayList(ds);
departmentList.setItems(ds1);
employeeAddDepartment.setItems(ds1);
employeeEditDepartment.setItems(ds1);

问题是,当您将一个元素添加到一个元素(例如,departmentList)时

代码语言:javascript
运行
复制
departmentList.getItems().add(dep);

,它也会自动添加到选择框中,您可以在listview和两个选择框中获得3个重复项。为什么会发生这种事?我试着看胸部。列表文档,但没有找到任何相关的,也搜索堆栈溢出。我试图向Employee类添加等于/hashCode方法,但看起来它不影响它。

更奇怪的是,有时这种同步停止工作。就像上一次启动它时一样,但是今天您根本看不到将项目添加到选择框中(如果您只向其中一个元素添加元素以防止重复)。因此,您尝试修改您的代码,并尝试添加元素到选择框,如果他们今天没有同步,因为一些原因。接下来,启动应用程序并再次看到3个重复项。您恢复了代码,现在您的应用程序就像昨天一样工作。听起来很奇怪,但它的工作原理是这样的。

因此,问题是为什么这种情况会发生/不会随机发生,以及如何禁用/启用它以确保它将按预期的方式运行?

EN

Stack Overflow用户

回答已采纳

发布于 2016-01-08 16:30:26

这是因为这三个组件共享相同的列表。这样创建它:

代码语言:javascript
运行
复制
List<Department> ds = db.getDepartmentList();
departmentList.getItems().addAll(ds);
employeeAddDepartment.getItems().addAll(ds);
employeeEditDepartment.getItems().addAll(ds);
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34681585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档