新しいノードを追加すると、DefaultMutableTreeNode. を拡張する TreeNode で JTree を使用します。JTree を更新できません。
5 に答える
実際には、親ノードをリロードするだけで十分です。初めの、
public void reload()
使っている
public void reload(TreeNode node)
ただし、ルートをパラメーターとして使用するため、直接ルートのリーフを更新しない限り、よりきめ細かいバージョンを使用することをお勧めします。
DefaultTreeModel を使用する場合は、そのreload()
メソッドを呼び出してみてください。
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
model.reload();
//or... model.reload(nodeUpdatedByYou);
tree.updateUI()
これはルック アンド フィール操作であるため、絶対に使用しないでください (動作はしますが)。
ノードに追加するだけでは十分ではなく、ツリーに通知する必要があります。これを行う正しい方法は、途中でツリーに正しく通知するため、モデルにノードの追加/削除を任せることです。
DefaultTreeModel (独自の TreeModel を作成していない場合は JTree で使用されるもの) の場合、メソッドinsertNodeInto(MutableTreeNode newChild, MutableTreeNode parent, int index)を使用できます。
JavaはMVCを使用してJTreeコンポーネントを実装するため、ノードを追加する操作はモデルを変更するだけです。さらに、ツリーの表現にいくつかの変更が行われたことを通知する必要があります。ツリーモデルのfireTreeNodes***メソッドを使用して、この種の変更をJTreeオブジェクトに通知してみてください。詳細については、JavaAPIを参照してください。幸運を。
を使用していDefaultTreeModel
ますか?
その場合、追加時にinsertNodeInto API を使用して、適切なイベントが生成されるようにします。