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
?
答案 0 :(得分:3)
如javadoc中所述:
标签可以充当其他控件或节点的标签。这用于助记符和加速器解析。这允许设置目标节点。
因此,如果您为标签设置了助记符:
Label label = new Label("_Text");
label.setMnemonicParsing(true);
label.setLabelFor(tf);
然后使用此助记符(Alt-T)将焦点放在标记为Node
的位置。
另外labelFor将帮助禁用的用户,他们将获得有关从引用标签中获取的控件的说明。