2015-06-09 33 views
2

什么是标签对象的labelFor字段的目的是什么?labelFor字段的标签不起作用,因为我预期

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

在此,请让我用一个例子明确:

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

回答

2

如在Javadoc指出:

标签可以作为用于不同的控制或节点的标签起作用。这用于助记符和加速器分析。这允许设置目标节点。

因此,如果您为标签的助记:

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

然后使用这个助记符(ALT-T)将会把重点放到标记Node

此外,labelFor将帮助禁用的用户提供关于从引用的标签获取的控件的描述。