2017-10-20 8 views
1

HBoxを拡張し、TextFieldButtonを含む単純なカスタムコントロールを作成しました。多くのコントロールでは、その目的を説明するラベルが付いているのが理にかなっています。ニーモニック対応のプラットフォームのユーザーがコントロールに簡単にアクセスできるようにする、具体的にはボタンインスタンスにフォーカスを当てるようにします。カスタムコントロールを持つLabel.setLabelFor(Node)の割り当て

私の最初の考えは、ターゲットノードがラベルのアクティブ化に焦点を当てていると仮定して、カスタムコントロールにフォーカスリスナーを割り当てることでしたが、これは機能しません。 JavaFXソースを調べると、Label.labelForProperty()NodeHelper$NodeAccessor.setLabeledBy(Node, Node)メソッドを使用していますが、NodeHelper$NodeAccessorインターフェイスのソリッドな実装が見つからないため、それを超えることはできません。私の推測では、このユーティリティクラスは、適切と思われるターゲットとの関連付けをマップするだけで、何らかの理由で私のカスタムコントロールがマップされないということです。

私は、ボタンへのアクセスを開いてターゲットとして直接割り当てることができますが、明白な理由から、これは賢明ではないため、ボタンをアクセスできない状態にすることをお勧めします。

誰もがこのシナリオに遭遇し、カスタムコントロールの内部実装の詳細の可視性を損なうことなく実行可能なソリューション/回避策を見つけましたか?

答えて

0

これはpublic視界持っているあなたのButtonを必要としない簡単な回避策です:

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

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

感謝を。これは多かれ少なかれ私の生産コードのために行った回避策ですが、どういうわけかまだ少し "クルージュ"と感じています。それでも、少なくともそれは動作しますが、それは結局のところ主な目的です。 – stan

関連する問題