- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
简短:我正在寻找一种方法来更新 ListView
的内容基于对 Map
所做的更改和 map 中的值。
情况:
有“来源”LinkedHashMap<String, Data>
在应用程序的逻辑方面。
在 GUI 部分有一个 ListView,例如:
// Gui list.
ListView<Data> list = new ListView<>();
// Observable map wrapping logical map
ObservableMap<String, Data> items = FXCollections.observableMap(logic.getLogicalMap());
// This listener will cause gui list to also change logical list
items.addListener((MapChangeListener<String, Data>) change ->
{
list.getItems().removeAll(change.getValueRemoved());
if (change.wasAdded())
{
list.getItems().add(change.getValueAdded());
}
});
// Show values of map in ListView.
list.getItems().setAll(items.values());
list.setCellFactory(new Callback<ListView<Data>, ListCell<Data>>()
{
@Override
public ListCell<Data> call(ListView<Data> list)
{
return new DataCell();
}
});
// Basically cells that update when map is updated.
private static class DataCell extends ListCell<Data>
{
@Override
public void updateItem(Data item, boolean empty)
{
super.updateItem(item, empty);
if (item != null)
{
this.setText(item.toString());
}
else
{
this.setText("");
}
}
}
现在:一切都很顺利,直到我希望单元格显示对 Data
所做的更改包含在 Map#values()
中.
我遇到了提取器,但显然它们只适用于 ObservableLists。那么现在:我如何通知 ObservableMap(然后通知 ListView)发生在“蜂窝”(值)级别的更新?
最佳答案
将 Data
重构为 JavaBean(是 POJO)并使用(在 DataCell#updateItem
中):
this.textProperty().bind(Bindings.concat(item.propertyOne(), " / ", item.propertyTwo()));
解决了我的问题。
关于java - 带有值提取器的 ObservableMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41337317/
简短:我正在寻找一种方法来更新 ListView 的内容基于对 Map 所做的更改和 map 中的值。 情况: 有“来源”LinkedHashMap在应用程序的逻辑方面。 在 GUI 部分有一个 Li
我使用单例作为 Employee 对象的虚假数据库。 在这个伪数据库中,有一个 ObservableMap,利用员工的社会安全号码作为其唯一 key 。 我有 ComboBox、TableView 和
我正在尝试使用 scala.collection.mutable.ObservableMap。 我抓取了下面的片段 from scala-user并将其复制到 REPL。 电子邮件提到已标记为已修复的
我创建了一个 ObservableMap 和一个只打印它接收到的任何事件的订阅者(取自 here): class MyMap extends HashMap[Int,Int] with Observa
JavaFX 是否有一种绑定(bind)类型,在这种绑定(bind)类型中,我提供一个带有键的可观察映射,并且计算值将始终随着键/值对的变化而更新?从 map 中删除该键将导致 null值,将其加回去
我正在尝试放置一个与我 View 上的监听器链接的 ObservableMap> 。 这是我正在使用的代码: ObservableMap> map = FXCollections.observable
我有 ObservableMap,其中添加了资源文件。 private ObservableMap resourceFilesData; resourceFilesData = new Observa
我有一个使用 ObservableMap 填充的组合。我想要的是,如果在组合中选择一个项目(键),则能够获取相应的对象(值)。这是我到目前为止所拥有的 import java.sql.Prepared
我正在向我的 JavaFX 8 应用程序添加一些加速器,当我尝试清除场景的加速器时,我遇到了 ConcurrentModificationException。让我解释一下,而不是为每个对话框使用一个场
我目前正在开发一个应用程序,该应用程序内部有一个 HashMap,用于存储与字符串关联的创建的任务,声明如下: private Map _tabs = new HashMap(); 它在终端中运行良好
问题:为什么使用 newValue 的副本“oldValue”调用 ChangeListener ObservableMap? import javafx.beans.property.Sim
我以 ObservableMap 的格式获取数据.要在 View 中实现此数据,我需要采用 ObservableList 格式的 map 值。 . 因为我需要 map 集合中的数据(以避免重复和其他原
我的 Java 程序生成大量数据,我用这些数据构造单独的 ResultObject。因为只有某些 ResultsObjects 会令人感兴趣,所以我用我的结果填充 ObservableHashMap<
我是一名优秀的程序员,十分优秀!