我已經編寫了一個簡單的自定義控件,它擴展了HBox
幷包含一個TextField
和Button
。對於許多控件來說,在描述其用途時有一個標籤是有意義的,我希望支持助記符的平臺上的用戶能夠輕鬆訪問該控件,更具體地說,將焦點放在按鈕實例上。使用自定義控件分配Label.setLabelFor(節點)
我的第一個想法是將一個焦點偵聽器分配給自定義控件,假設目標節點將專注於標籤激活,但這不起作用。在深入研究JavaFX源代碼時,我發現Label.labelForProperty()
使用NodeHelper$NodeAccessor.setLabeledBy(Node, Node)
方法,但無法超越,因爲我找不到NodeHelper$NodeAccessor
接口的實際實現。我的猜測是,這個工具類只映射它認爲合適的目標的關聯,並且出於某種原因,我的自定義控件不是。
我的第二個想法是打開按鈕的訪問權限,然後可以直接將其指定爲目標,但由於顯而易見的原因,這是一個糟糕的選擇,而且我寧願讓按鈕不可訪問。
有沒有人遇到過這種情況,並且發現了一個可行的解決方案/解決方法而不影響自定義控件的內部實現細節的可見性?
感謝;這或多或少是我用於生產代碼的解決方法,但不知何故仍然感覺有點「糟糕」。不過,至少它是有效的,畢竟這是主要目標。 – stan