4

Java Swing で JTree を作成しようとしていますが、実行時にノード テキストを変更したいと考えています。

try
 {

int a=1,b=2,c=3;
 DefaultMutableTreeNode root =
new DefaultMutableTreeNode("A"+a);
DefaultMutableTreeNode child[]=new DefaultMutableTreeNode[1];
DefaultMutableTreeNode grandChild[]= new DefaultMutableTreeNode[1];

child[0] = new DefaultMutableTreeNode("Central Excise"+b);
  grandChild[0]=new DefaultMutableTreeNode("CE Acts: "+c);
child[0].add(grandChild[0]);
 root.add(child[0]);
tree = new JTree(root);
 }
 catch(Exception ex)

 {
  ex.printStackTrace()
 }

後で、子ノードと孫ノードで A 1 を A 2 に動的かつ同様に変更する方法を知りたい

4

2 に答える 2

10

あなたは探しているjavax.swing.tree.DefaultMutableTreeNode.setUserObject(Object)

DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
root.setUserObject("My label");
model.nodeChanged(root);

これは、 を使用していることを前提としていますDefautltTreeModel

于 2013-04-15T11:15:19.113 に答える
2

カスタム TreeModel を使用していない場合、ツリーのモデルはDefaultTreeModelです。

DefaultMutableTreeNode getUserObject() (文字列など)を指定して、目的を達成するには、 ある種のコンパレータを使用してツリーをたどる必要があります。

質問と貼り付けたコードに応じて、2 つの簡単なオプションがあります。

  • クリック イベントなどによって変更がトリガーされた場合、選択を取得してそこからツリーをたどることができます。
  • それ以外の場合は、ルートからツリーをたどる必要があります

変更が成功したら、後でビューの再描画をトリガーするモデルからイベントを発生させる必要があります ( nodesWereInsertedなど)。

それが役に立てば幸い

于 2013-04-15T11:09:56.623 に答える