• ベストアンサー

ノードの削除

removeAllChildren()を使って子ノードを削除させたのですが、上手く削除できません。削除はされているようなのですが、repaint()を使っても親ノードから伸びる線は消えているのですが、削除したはずのノードが残っている状態です。どうしたらよいのか分かりません。 教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sasadora
  • ベストアンサー率68% (59/86)
回答No.1

どういう環境で動かしているのか、分からないのですが、 javax.swing.JTreeを使っているんですよね。 TreeModelにDefaultTreeModelを使っているときは、 reload()を使うと、再描画されました。 例:((DefaultTreeModel)tree.getModel()).reload(); JTreeは難しいですが、がんばってください。 英語ですが、sunのチュートリアルが参考になると思います。

参考URL:
http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html

その他の回答 (1)

  • sasadora
  • ベストアンサー率68% (59/86)
回答No.2

私が試してみたサンプルです。 ======================================== import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.tree.*; public class Test extends JFrame{   JTree tree = new JTree();   JButton btn = new JButton("remove");   DefaultMutableTreeNode top = null;   DefaultTreeModel model = null;   public static void main(String[] args){     new Test().show();   }   public Test(){     this.setSize(200, 200);     top = new DefaultMutableTreeNode("Top");     top.add(new DefaultMutableTreeNode("Child1"));     top.add(new DefaultMutableTreeNode("Child2"));     top.add(new DefaultMutableTreeNode("Child3"));          model = new DefaultTreeModel(top);     tree.setModel(model);          this.addWindowListener(new WindowAdapter(){       public void windowClosing(WindowEvent e){         System.exit(0);       }     });     btn.addActionListener(new ActionListener(){       public void actionPerformed(ActionEvent e){         top.removeAllChildren();         ((DefaultTreeModel)tree.getModel()).reload();       }     });          this.getContentPane().add(tree, BorderLayout.CENTER);     this.getContentPane().add(btn, BorderLayout.SOUTH);   } }

noname#6127
質問者

お礼

ありがとうございました。 reload()を使ったら上手くいきました。

関連するQ&A