【问题标题】:Node.setDisable() vs setDisabled() in JavaFXJavaFX 中的 Node.setDisable() 与 setDisabled()
【发布时间】:2016-03-26 06:39:23
【问题描述】:

javafx.scene.Node继承时有两种方法可供调用:(我在炫耀当前的8u66 Oracle实现)

setDisable(boolean)

public final void setDisable(boolean value) {
    disableProperty().set(value);
}

setDisabled(boolean)

protected final void setDisabled(boolean value) {
    disabledPropertyImpl().set(value);
}

javafx.scene.Node继承时应该调用哪个?

【问题讨论】:

    标签: java javafx


    【解决方案1】:

    这在一定程度上取决于上下文,但您几乎可以肯定要调用setDisable(...)

    在 JavaFX 中,如果节点的 disable 属性为 true,或者如果 disable 属性为 true 对于场景图中的任何祖先,则节点被渲染为禁用,并忽略任何用户输入。 disabled 属性是节点客户端的只读属性,它反映了这种整体状态:即当且仅当disable 对该节点或其任何祖先(容器)为真时,disabled 为真) 节点。

    所以要禁用一个节点,您通常应该调用setDisable(true);。在Node 的自定义子类中,您应该只调用setDisabled(true); 来强制执行上述规则。请注意,超类实现已经强制执行此规则,因此除非您正在做一些非常复杂的事情(我什至看不到用例),否则您不需要调用setDisabled(...)

    【讨论】:

      【解决方案2】:

      您想使用setDisable,而不是setDisabledsetDisable 是一个 public 禁用节点的方法,setDisabledprotected 仅由内部实现使用的方法。

      用户@jewelsea引用自this comment

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-18
        • 2015-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-09
        相关资源
        最近更新 更多