JavaFX中的Node.setDisable()和setDisabled()有什么区别?

7

继承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个回答

9
这要看具体情况,但你几乎肯定需要调用setDisable(...)方法。在JavaFX中,如果节点的disable属性为true或其任何祖先节点的disable属性为true,则该节点将被呈现为禁用状态,并忽略任何用户输入。 disabled属性是节点的只读属性,反映了此总体状态:即仅当此节点或其任何祖先(容器)节点的disabletrue时,disabled才为true。因此,要禁用节点,通常应调用setDisable(true);。在Node的自定义子类中,您应该仅调用setDisabled(true);以强制执行上述规则。请注意,超类实现已经实施了此规则,因此除非您正在进行非常复杂的操作(我甚至无法看到一个使用案例),否则您将不需要调用setDisabled(...)

4
你应该使用 setDisable 而不是 setDisabledsetDisable 是一个用于禁用节点的 public 方法,而 setDisabled 是一个仅由内部实现使用的 protected 方法。引自用户 @jewelsea此评论中的话。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接