我有一个问题,将Label someLabel 与一个值绑定。
因此,有一个类将HashMap字段用作库存:
public HashMap<Animals, Integer> inventory = new HashMap<>();
我需要实时显示此Integer值,就像某种计时器一样。
问题是,我尝试在标签上使用 bind 属性,但它只会显示初始值,并且绑定存在一些问题,因为它需要 SimpleStringProperty < / em>类实例作为属性。调用我的get(Object key)
方法时,我会在修改后返回 String ,并且不允许我这样做...
请指出我正确的方向,每次调用方法put()
时是否应该监控,以便通过setText()
将标签保持在现场?
答案 0 :(得分:1)
HashMap
未实施Observable
。
然而,JavaFX的ObservableMap
确实实现了Observable
:
ObservableMap<Animals, Integer> inventory = FXCollections.observableHashMap();
Label label = ...
Animals key = ...
label.textProperty().bind(Bindings.valueAt(inventory, key).asString());
或更多控制
label.textProperty().bind(Bindings.createStringBinding(() -> Objects.toString(inventory.get(key), "n/a"), inventory);