如何在jtree中实现用户自己添加节点,请高手指点
解决方案 »
- ☆关于动画的清除背景和双缓冲的问题☆
- [线程问题]看thinking in java时,碰到一个例子想不通
- java保存两个文件到ms sql server里面 的image字段里面
- 如何打开文件
- 在swing中怎样显示从public class LogWin extends org.eclipse.swt.widgets.Composite
- 关于SWING
- java pert 任务大家看看 怎么实现
- 9牛2虎之力写好的程序,有错误,不会改,求大神指点,刚学java
- java中的native关键字是什么意思?有什么用?:(
- 初学Java,问有关线性表一事
- 如何从控制台输入数据?
- 一道让我想不透的题目,向各位大大门求救
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
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.TreeNode;
import javax.swing.tree.TreePath;public class TreeTest {
public static void main(String[] args) {
JFrame frame = new TreeEditFrame();
frame.setVisible(true);
}
}class TreeEditFrame extends JFrame implements ActionListener {
private DefaultTreeModel model;
private JTree tree;
private JButton addChildButton;
private JButton deleteButton;
public TreeEditFrame() {
setTitle("TreeTest");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); TreeNode root = makeSampleTree();
model = new DefaultTreeModel(root);
tree = new JTree(model);
tree.setEditable(true); Container contentPane = getContentPane();
JScrollPane scrollPane = new JScrollPane(tree);
contentPane.add(scrollPane, "Center"); JPanel panel = new JPanel();
addChildButton = new JButton("Add Child");
addChildButton.addActionListener(this);
panel.add(addChildButton);
deleteButton = new JButton("Delete");
deleteButton.addActionListener(this);
panel.add(deleteButton);
contentPane.add(panel, "South");
} public TreeNode makeSampleTree() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
DefaultMutableTreeNode country = new DefaultMutableTreeNode("Node1");
root.add(country);
DefaultMutableTreeNode state = new DefaultMutableTreeNode("subNode1");
country.add(state);
DefaultMutableTreeNode city = new DefaultMutableTreeNode("subsubNode1");
state.add(city);
city = new DefaultMutableTreeNode("subsubNode2");
state.add(city);
return root;
} public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent(); if (selectedNode == null)
return; if (event.getSource().equals(deleteButton)) {
if (selectedNode.getParent() != null)
model.removeNodeFromParent(selectedNode);
return;
} DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("newNode"); if (event.getSource().equals(addChildButton)) {
model.insertNodeInto(newNode, selectedNode, selectedNode
.getChildCount());
}
TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
}