2015-06-09 55 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將幫助禁用的用戶提供關於從引用的標籤獲取的控件的描述。