gpt4 book ai didi

java - 如何创建其值基于整数的 boolean 属性/绑定(bind)?

转载 作者:行者123 更新时间:2023-11-30 06:40:38 24 4
gpt4 key购买 nike

我想创建一个通过 int 保存 boolean 信息的类:如果其值大于 0,则 boolean 值为 true,否则 false.

这是一个封装此行为的类:

public class CumulativeBoolean {

private int cumulative = 0;

public boolean get() {
return cumulative > 0;
}

public void set(boolean val) {
cumulative += val ? 1 : -1;
}
}

我想根据此设计创建一个允许绑定(bind)和监听的 JavaFX 类。我考虑了扩展 BooleanBindingBooleanPropertyBase,它们都保存一个 私有(private) boolean 值 作为它们的值,而我想要的是一个 int .

这就是我的BooleanBinding:

public class CumulativeBooleanBinding extends BooleanBinding {

private int cumulative = 0;

public void set(boolean val) {
cumulative += val ? 1 : -1;
invalidate();
}

@Override
protected boolean computeValue() {
return cumulative != 0;
}
}

但是,我不认为 BooleanBinding 的想法是支持 set 功能,并且还存在在值是时设置值的问题绑定(bind)。

另一方面,

BooleanPropertyBase 不允许我在更新时失效,因为它的 markInvalid 方法和 valid 字段是私有(private)的。

我怎样才能实现这个目标?

最佳答案

如果您想使用 JavaFX 的绑定(bind)功能,则必须使用 ObservableValue(例如 SimpleIntegerProperty)。

以下代码显示了如何实现它的快速示例:

SimpleIntegerProperty intProp = new SimpleIntegerProperty(0);
BooleanBinding binding = intProp.greaterThanOrEqualTo(0);

如果您不想在类中使用 Integer 的 ObservableValue,另一个选项是在设置 int 时更新 BooleanProperty:

SimpleBooleanProperty fakeBinding = new SimpleBooleanProperty(value >= 0);

每次调用 set 方法后:

fakeBinding.set(value >= 0);

编辑:看来 MBec 比我快:p

关于java - 如何创建其值基于整数的 boolean 属性/绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44430346/

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