2016-04-23 3 views
0

ControlsFXのPropertySheet.Itemノード(たとえばTextField)にフォーカスを設定します。 PropertySheet Itemはユニークな名前なので、propertySheet.getItems().get(i).getName()PropertySheet.Itemが見つかります。しかし、プロパティ項目に相当するNodeを取得するAPIはありません。私が見る唯一の解決策は、方法getChildrenUnmodifiablewalk scene graphです。私はこの方法でPropertySheetを通過するときしかし、それは返しますControlsFXのPropertySheet Item Nodeにフォーカスを設定

[email protected][styleClass=property-sheet] 
[email protected] 
[email protected][styleClass=tool-bar] 
[email protected][styleClass=segmented-button] 
[email protected] 
[email protected][styleClass=toggle-button left-pill]'' 

は、私は、このようなTextFieldComboBoxなどの任意のPropertySheetのノードを得ることはありません。それは可能ですか?ありがとうございました。

答えて

0

解決策が見つかりました。 setPropertyEditorFactoryとすべてのノードを格納するグローバルハッシュマップ変数を使用する必要があります。後でアクセスすることができます。以下のサンプルコード。この後

public Map<String, Node> nodes = new HashMap<>(); 

    SimpleObjectProperty<Callback<PropertySheet.Item, PropertyEditor<?>>> propertyEditorFactory = 
new SimpleObjectProperty<>(this, "propertyEditor", new DefaultPropertyEditorFactory()); 

    propertySheet.setPropertyEditorFactory((PropertySheet.Item param) -> { 
     PropertyEditor node = propertyEditorFactory.get().call(param); 
     nodes.put(uniquePropertyName, node.getEditor()); 
     return node; 
    }); 

あなたがプロパティノードを集中することができます:

nodes.get(propertyName).requestFocus(); 
関連する問題