2012-05-08 3 views
1

Existe-t-il un moyen de stocker un identificateur d'un objet modèle ou de l'objet modèle lui-même dans JavaFX 2 TreeItem<String>? Il n'y a que Value pour stocker le texte ...Identificateur de modèle pour nœud dans JavaFX 2 TreeItem

Je remplis un TreeView à partir d'une liste d'objets de modèle, et j'ai besoin de le trouver lorsque l'utilisateur clique sur un nœud. Je suis habitué à travailler avec Value et Text dans .NET Windows Forms ou HTML et j'ai peur de ne pas pouvoir adapter cette façon de penser à JavaFX ...

Répondre

4

Vous pouvez utiliser n'importe quel objet avec TreeView, il suffit de le remplacer toString() pour la présentation ou l'extension javafx.scene.Node

pour la classe suivante:

private static class MyObject { 
    private final String value; 
    public MyObject(String st) { value = st; } 

    public String toString() { return "MyObject{" + "value=" + value + '}'; } 
} 

TreeView doit être créé suivante façon:

TreeView<MyObject> treeView = new TreeView<MyObject>(); 
TreeItem<MyObject> treeRoot = new TreeItem<MyObject>(new MyObject("Root node")); 
treeView.setRoot(treeRoot); 
+0

cela fonctionne pour moi. Merci . . . –

1

J'ai la même question que l'OP. En outre, je veux lier la valeur affichée dans TreeItem à une propriété de l'objet. Ce n'est pas complet, mais j'expérimente la classe d'assistance suivante, où je passe l'objet utilisateur (ou l'élément) à référencer dans TreeItem, et un objet valueProperty (qui, dans mon cas, est une propriété de l'élément) à être lié à la TreeItem.value.

final class BoundTreeItem<B, T> extends TreeItem<T> { 
    public BoundTreeItem(B item, Property<T> valueProperty) { 
    this(item, valueProperty, null); 
    } 

    public BoundTreeItem(B item, Property<T> valueProperty, Node graphic) { 
    super(null, graphic); 
    itemProperty.set(item); 
    this.valueProperty().bindBidirectional(valueProperty); 
    } 

    public ObjectProperty<B> itemProperty() { 
    return itemProperty; 
    } 

    public B getItem() { 
    return itemProperty.get(); 
    } 

    private ObjectProperty<B> itemProperty = new SimpleObjectProperty<>(); 
} 
+0

Cette réponse est-elle complète? Je pense que la liaison doit être une option facile pour la valeur d'un TreeItem. – Joel

Questions connexes