JavaFX中的Node.setDisable()vs setDisabled()
从javafx.scene.Node
inheritance时,有两种方法可用于调用:(我正在展示当前的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
inheritance时我应该调用哪一个?
它取决于上下文,但你几乎肯定想调用setDisable(...)
。
在JavaFX中,节点呈现为已禁用,如果其disable
属性为true
,或者如果场景图中的任何祖先的disable
属性为true,则忽略任何用户输入。 disabled
属性是节点客户端的只读属性,它反映了这种整体状态:即当且仅当此节点或其任何祖先(容器)节点的disable
为true时, disabled
才为真。
因此,要禁用节点,通常应调用setDisable(true);
。 在Node
的自定义子类中,您应该只调用setDisabled(true);
执行上述规则。 请注意,超类实现已经强制执行此规则,因此除非您正在做一些非常复杂的事情(我甚至不能真正看到用例),否则您不需要调用setDisabled(...)
。
您想使用
setDisable
,而不是setDisabled
。setDisable
是用于禁用节点的public
方法,setDisabled
是仅由内部实现使用的protected
方法。
引自用户@jewelsea的 评论引用。