0

ControlsFXでPropertySheet.Itemノード (たとえば) にフォーカスを設定したいと考えています。PropertySheet アイテムには一意の名前があるため、コードでTextField見つけることができます。しかし、プロパティ項目に対応するものを取得する API はありません。私が見る唯一の解決策は、メソッドでシーングラフを歩くことです。しかし、このメソッドをトラバースすると、次のように返されます。PropertySheet.ItempropertySheet.getItems().get(i).getName()NodegetChildrenUnmodifiablePropertySheet

PropertySheet@1ab0e7e0[styleClass=property-sheet]
BorderPane@46e1b462
ToolBar@93ba99a[styleClass=tool-bar]
SegmentedButton@d5c968[styleClass=segmented-button]
HBox@1c3283db
ToggleButton@2fffaccc[styleClass=toggle-button left-pill]''

TextFieldやなどのプロパティシート ノードが表示されませんComboBox。それは可能ですか?ありがとうございました。

4

1 に答える 1

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;
    });

この後、プロパティ Node に次のようにフォーカスできます。

nodes.get(propertyName).requestFocus();
于 2016-04-24T06:17:39.247 に答える