【问题标题】:JavaFX 2.2: How to set SimpleBooleanProperty value to null?JavaFX 2.2:如何将 SimpleBooleanProperty 值设置为 null?
【发布时间】:2013-09-03 22:03:31
【问题描述】:

如果我这样做:

BooleanProperty b = new SimpleBooleanProperty();
b.setValue(null);
System.out.println(b.getValue());

我收到输出:

false

如何将SimpleBooleanProperty 的值设置为null?将SimpleBooleanProperty 设置为null (BooleanProperty b = null;) 是个坏主意,因为我将使用绑定。

我开创了道路:

ObjectProperty<Boolean> b = new SimpleObjectProperty<Boolean>(null);
System.out.println(b.getValue());

工作正常。

我无法回答我的问题,所以我把它放在这里,抱歉。

【问题讨论】:

  • 为什么要将boolean 属性的值设置为null
  • @mre 我需要 3 个状态:真、假、未确定。我想将Boolean 的值设置为null,而不是boolean

标签: java javafx-2


【解决方案1】:

SimpleBooleanPropertyboolean(原始)的包装器 - 空值自动设置为默认 (false) 值。

如果您想允许null 值,您可以使用ObjectProperty&lt;Boolean&gt; b = new SimpleObjectProperty&lt;&gt; ();。缺点是您丢失了默认的布尔绑定。

或者,您可以创建一个覆盖现有 setValue 实现的自定义类,但这可能有点复杂,因为它依赖于显然不能接受 nullset(boolean) 方法...

【讨论】:

    【解决方案2】:

    我认为没有办法将值设置为null。看看BooleanProperty#setValue的实现,

    public void setValue(Boolean paramBoolean)
    {
        set(paramBoolean == null ? false : paramBoolean.booleanValue());
    }
    

    这正是您所看到的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-13
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      相关资源
      最近更新 更多