2017-10-20 1 views
1

Ich habe ein einfaches benutzerdefiniertes Steuerelement geschrieben, das HBox erweitert und enthält eine TextField und Button. Wie bei vielen Steuerelementen ist es sinnvoll, neben der Beschreibung des Zwecks auch eine Beschriftung zu verwenden, und ich möchte, dass Benutzer auf speicherprogrammierbaren Plattformen problemlos auf die Steuerung zugreifen können, wobei der Fokus besonders auf der Schaltflächeninstanz liegt.Zuordnung von Label.setLabelFor (Node) mit benutzerdefinierten Steuerelement

Mein erster Gedanke war, dem benutzerdefinierten Steuerelement einen Fokus-Listener zuzuweisen, unter der Annahme, dass der Zielknoten auf Label-Aktivierung konzentriert wäre, aber das funktioniert nicht. Beim Eintauchen in JavaFX-Quelle finde ich die Label.labelForProperty() verwendet eine NodeHelper$NodeAccessor.setLabeledBy(Node, Node) Methode, kann aber nicht darüber hinaus, wie ich eine solide Implementierung der NodeHelper$NodeAccessor Schnittstelle nicht finden kann. Meine Vermutung ist, dass diese Utility-Klasse nur Assoziationen mit Zielen zuordnet, die sie für geeignet hält, und aus irgendeinem Grund ist meine benutzerdefinierte Kontrolle nicht.

Mein zweiter Gedanke ist, den Zugriff auf die Schaltfläche zu öffnen, die dann direkt als Ziel zugewiesen werden kann, aber aus offensichtlichen Gründen ist dies eine schlechte Wahl, und ich würde lieber die Schaltfläche unzugänglich lassen.

Hat jemand dieses Szenario gefunden und eine praktikable Lösung/Problemumgehung gefunden, ohne die Sichtbarkeit interner Implementierungsdetails eines benutzerdefinierten Steuerelements zu beeinträchtigen? public Sichtbarkeit haben

Antwort

0

Dies ist eine einfache Abhilfe, die nicht Ihre Button benötigt:

public class YourCustomClass { 
    private TextField tf; 
    private Button btn; 

    public void registerLabel(Label label) { 
     label.setLabelFor(btn); 
    } 
} 
+0

Dank; Das ist mehr oder weniger die Problemumgehung für meinen Produktionscode, aber irgendwie fühle ich mich immer noch ein bisschen "kludgy". Immerhin funktioniert es zumindest, was ja das Hauptziel ist. – stan

Verwandte Themen