java - 将 ListView 绑定(bind)到 ObservableSet

标签 java user-interface javafx observable

我想知道是否有办法将 ObservableSet 绑定(bind)到 ListViewObservableList 双向绑定(bind)到 ObservableSet?

最佳答案

一般来说,这并不完全可行,因为列表和集合具有不同的功能(集合是无序的,而列表是有序的;列表可以包含重复项,但集合不能)。

您可以使用类似于以下的代码确保 ListView 显示来自 ObservableSet 的元素:

ObservableSet<String> set = FXCollections.observableSet();
ListView<String> listView = new ListView<>();
set.addListener((Change<? extends String> c) -> {
    if (c.wasAdded()) {
        listView.getItems().add(c.getElementAdded());
    }
    if (c.wasRemoved()) {
        listView.getItems().remove(c.getElementRemoved());
    }
});

如果 ListView 可以独立于集合进行操作,那么您可以使用 listView.getItems() 注册一个(有点)类似的监听器,并相应地更新集合.

关于java - 将 ListView 绑定(bind)到 ObservableSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33901891/

相关文章:

java - 继承的变量不显示在子类中

java - 如何使用 EclipseLink 避免 MySQL 连接超时错误?

linux - 使用正在运行的 GUI 程序退出 ssh -X session ,但让程序在远程主机上运行

excel - 将 JavaFX TableView 数据导出到 Excel (XLS)

ScrollPane 和 TitledPane 的 JavaFX 查找问题

java - JasperReports 图表类别刻度相互堆叠

java - 如何将 2 个 JList 添加到一个 JScrollPane 中?

c# - MS Access 查询设计器 - 使用标准 .NET 3.5 控件的类似功能?

java - 为 JavaFX 禁用 Alt + F4

java - 如何在最初给定的时区中存储和显示日期?