labelFor标签的字段不能按我的预期运行

时间:2015-06-09 14:09:52

标签: java javafx-8 labels

Label对象的labelFor字段的用途究竟是什么?

昨天是我第一次听说这个JavaFX的事情,所以如果这听起来完全愚蠢我会道歉。这个单词Label对我来说似乎很熟悉HTML节点中的单词。出于这个原因,我认为labelFor字段类似于for节点的label属性。不幸的是,它没有像我预期的那样发挥作用,至少我无法做到。

在这里,让我用一个例子说清楚:

Label name = new Label("Your name:");
TextField nameField = new TextField();

name.setLabelFor(nameField);

很抱歉,它不是真正的MWE,但这就是我对此的期望:每当用户点击标签name时,文本字段nameField都将获得焦点。

据我记忆,这正是HTML中标签/输入对所发生的情况。另一方面,上面在JavaFX中给出的代码没有任何反应。

我可以修改它以通过在其他三个之后添加以下行来实现这一点:

name.setOnMouseClicked(event -> name.getLabelFor().requestFocus());

但是,为什么我首先指定labelFor

1 个答案:

答案 0 :(得分:3)

如javadoc中所述:

  

标签可以充当其他控件或节点的标签。这用于助记符和加速器解析。这允许设置目标节点。

因此,如果您为标签设置了助记符:

    Label label = new Label("_Text");
    label.setMnemonicParsing(true);
    label.setLabelFor(tf);

然后使用此助记符(Alt-T)将焦点放在标记为Node的位置。

另外labelFor将帮助禁用的用户,他们将获得有关从引用标签中获取的控件的说明。