Java Swing - 如何動態(tài)添加節(jié)點到JTree
我們想知道如何動態(tài)添加節(jié)點到JTree。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
public class Main extends JPanel {
JTree tree = new JTree();
public Main() {
super(new BorderLayout());
JScrollPane jsp = new JScrollPane(tree);
add(jsp, BorderLayout.CENTER);
}
public static void main(String[] args) {
Main temp = new Main();
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(temp);
frame.pack();
frame.setVisible(true);
Thread updater = new Thread(temp.new CustomThread());
updater.start();
}
public class CustomThread implements Runnable {
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
updateTree("New Item " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void updateTree(final String nodeToAdd) {
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree.getModel()
.getRoot();
DefaultMutableTreeNode child = new DefaultMutableTreeNode(nodeToAdd);
model.insertNodeInto(child, root, root.getChildCount());
tree.scrollPathToVisible(new TreePath(child.getPath()));
}
}
}