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

RAn*_*s00 5 java javafx

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

setDisable(boolean)

public final void setDisable(boolean value) {
    disableProperty().set(value);
}
Run Code Online (Sandbox Code Playgroud)

setDisabled(boolean)

protected final void setDisabled(boolean value) {
    disabledPropertyImpl().set(value);
}
Run Code Online (Sandbox Code Playgroud)

继承时应该拨打哪一个javafx.scene.Node

Jam*_*s_D 9

这取决于上下文,但你几乎肯定想打电话setDisable(...).

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

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