1

私はObservableListsのObservableListsのObservableListを持っています...

基本的に4段階下がります。

ゴールには次のリストがあります

目標には次のリストがあります

戦略には次のリストがあります

戦術には次のリストがあります

仕事

明らかに、これは TreeView を設定してこのデータを表示するための完璧なシナリオのように見えます。構造に加えられた変更が TreeView にも表示されるようにするにはどうすればよいでしょうか?

ゴールがルートノードになると考えています。目的がそのリストに追加されるたびに、それをリッスンして、目的が作成されたことをゴールに警告できます。ただし、このリスナーをどこでどのように設定すればよいですか? ゴールに警告しますか? または、TreeView を更新するように静的ユーティリティ クラスに警告する必要がありますか?

4

1 に答える 1

1

ObservableList を使用してリスナーを追加すると、簡単に処理できます。

ゴールにリスナーを配置するとします。次に、Objective のいくつかの変更を確認します。変更が発生した場合 (Objective が追加された場合など)、特定のゴール (Map など) を使用する TreeItem をターゲットにして、それに子を追加します。

もちろん、次のような方法をいくつか用意することで、ジョブを簡素化できます。

private void addObjective(TreeItem<Object> specificGoal, List<Strategy > objective){
    TreeItem<Object> objectiveTreeItem = new TreeItem<>(objective);

    for(List<Tactic> strategy: objective){
        addStrategy(objectiveTreeItem, strategy);
    }
    specificGoal.getChildren().add(objectiveTreeItem);
}

レイヤーごとにメソッドを用意します。

もちろん、データ量が少ない場合は、TreeView 項目を消去し、更新された List を使用して作成に使用したメソッドを再起動することができます。よりシンプルですが、最適化されていません。

于 2014-07-18T15:05:12.397 に答える