使用HashMap值

时间:2018-02-26 16:09:46

标签: java javafx

我有一个问题,将Label someLabel 与一个值绑定。

因此,有一个类将HashMap字段用作库存:

public HashMap<Animals, Integer> inventory = new HashMap<>();

我需要实时显示此Integer值,就像某种计时器一样。

问题是,我尝试在标签上使用 bind 属性,但它只会显示初始值,并且绑定存在一些问题,因为它需要 SimpleStringProperty < / em>类实例作为属性。调用我的get(Object key)方法时,我会在修改后返回 String ,并且不允许我这样做...

请指出我正确的方向,每次调用方法put()时是否应该监控,以便通过setText()将标签保持在现场?

1 个答案:

答案 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);