1

モデルオブジェクトまたはモデルオブジェクト自体の識別子をJavaFX2に保存する方法はありますTreeItem<String>か?Valueテキストを保存するだけです...

モデルオブジェクトのリストからデータを入力しているTreeViewので、ユーザーがノードをクリックしたときにそれを見つける必要があります。私は.NETWindowsフォームまたはHTMLでの作業に慣れてValueおりText、この考え方をJavaFXに適応させることができないのではないかと心配しています...

4

2 に答える 2

5

TreeViewで任意のオブジェクトを使用できます。オブジェクトは、toString()表示または拡張するためにオーバーライドする必要があります。javafx.scene.Node

例:次のクラスの場合:

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

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

TreeViewは次の方法で作成する必要があります。

TreeView<MyObject> treeView = new TreeView<MyObject>();
TreeItem<MyObject> treeRoot = new TreeItem<MyObject>(new MyObject("Root node"));
treeView.setRoot(treeRoot);
于 2012-05-08T16:57:02.593 に答える
1

OPと同じ問題があります。さらに、TreeItemに表示されている値をオブジェクトのプロパティにバインドしたいと思います。これは完全ではありませんが、次のヘルパークラスを試しています。ここでは、TreeItemで参照される「ユーザーオブジェクト」(またはアイテム)とvalueProperty(私の場合は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<>();
}
于 2012-06-16T02:30:02.623 に答える