2 回答
TA贡献1817条经验 获得超6个赞
这是使用自定义 StringBinding() 的快速解决方案
// Bind the label to display a size-aware notification
label.textProperty().bind(new StringBinding() {
{ bind(listSize); }
@Override
protected String computeValue() {
return "The list contains " + listSize.get() + ((items.size() != 1) ? " items!" : " item!");
}
});
在上面的代码中,您将监听 listSize 的更改,然后您将在 computeValue() 中创建新的 String。
TA贡献1858条经验 获得超8个赞
这是较短的等价物:
label.textProperty().bind(Bindings.createStringBinding(
() -> "The list contains " + listSize.get() + ((itemSize.get() != 1) ? " items!" : " item!",
listSize
));
或者另一种选择:
label.textProperty.bind(Bindings
.when(listSize.isEqualTo(1))
.then("The list contains 1 item!")
.otherwise(
Bindings.concat("The list contains " + listSize + " items!")
)
);
添加回答
举报