gpt4 book ai didi

javafx - 将 textProperty 绑定(bind)到表达式

转载 作者:行者123 更新时间:2023-12-02 20:53:26 28 4
gpt4 key购买 nike

抱歉,如果问题看起来很简单,但我对 Java 绑定(bind)有点困惑。

我需要将标签的 textProperty 绑定(bind)到对象的 SimpleIntegerProperty,但作为条件检查的结果。

SimpleIntegerProperty 可以是 0、1、2、3、4、5、6,并且根据值的不同,有字符串值分配给 textProperty。

喜欢:

SimpleIntegerProperty is 0  ->  textProperty   displays "State 0"
SimpleIntegerProperty is 1 -> textProperty displays "State 1"
SimpleIntegerProperty is 2 -> textProperty displays "State 2"

等等...

我尝试使用 Bindings.createStringBinding 来完成此操作,但它不允许在其中使用“if”语句。

感谢您的帮助。

最佳答案

当然createStringBinding允许使用if或类似的结构。您只需将其括在 {} 括号内并使用 return(如果您使用的是 lambda 表达式):

IntegerProperty property = ...
StringProperty target = ...
target.bind(Bindings.createStringBinding(() -> {
switch (property.get()) {
case 0:
return "State 0";
case 1:
return "State 1";
case 2:
return "State 2";
case 3:
return "State 3";
case 4:
return "State 4";
case 5:
return "State 5";
case 6:
return "State 6";
default:
return "";
}
}, property));

或者如果模式始终为“State”+value

IntegerProperty property = ...
StringProperty target = ...
target.bind(Bindings.createStringBinding(() -> {
int value = property.get();
return (value >= 0 && value <= 6) ? "State "+value : "";
}, property));

关于javafx - 将 textProperty 绑定(bind)到表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41302366/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com