2016-04-23 9 views
0

Ich möchte den Fokus auf PropertySheet.Item Node setzen (zum Beispiel TextField) in ControlsFX. PropertySheet Item haben einen eindeutigen Namen, so kann ich PropertySheet.Item mit Code propertySheet.getItems().get(i).getName() finden. Aber es gibt keine API, um Node zu bekommen, was der Eigenschaft entspricht. Die einzige Lösung, die ich sehe, ist walk scene graph mit Methode getChildrenUnmodifiable. Aber wenn ich PropertySheet mit dieser Methode durchqueren gibt es:Setzen Sie den Fokus auf PropertySheet Elementknoten in ControlsFX

[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]'' 

Ich bekomme keine Property Knoten wie TextField oder ComboBox. Ist es möglich, es zu tun? Vielen Dank.

Antwort

0

Ich fand eine Lösung. Sie müssen setPropertyEditorFactory und globale hashmap Variable verwenden, die alle Knoten speichert, damit Sie später darauf zugreifen können. Beispielcode unten.

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

Danach können Sie Eigenschaftsknoten mit Fokus:

nodes.get(propertyName).requestFocus(); 
Verwandte Themen