JavaFX中的Node.setDisable()vs setDisabled()

时间:2015-12-19 19:26:54

标签: java javafx

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继承时,我应该拨打哪一个?

2 个答案:

答案 0 :(得分:9)

这取决于上下文,但你几乎肯定想要调用setDisable(...)

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

因此,要禁用节点,通常应调用setDisable(true);。在Node的自定义子类中,您只应调用setDisabled(true);来强制执行上述规则。请注意,超类实现已经强制执行此规则,因此除非您正在执行非常复杂的操作(我甚至不能真正看到用例),否则您无需调用setDisabled(...)

答案 1 :(得分:3)

  

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

用户this comment@jewelsea引用。