Tree Example05

来源:互联网 发布:单片机 系统设计 编辑:程序博客网 时间:2024/06/03 21:33
import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.tree.*;public class ExampleFrame_05 extends JFrame {private JTextField textField;private DefaultTreeModel treeModel;private JTree tree;public static void main(String args[]) {ExampleFrame_05 frame = new ExampleFrame_05();frame.setVisible(true);}public ExampleFrame_05() {super();setTitle("维护企业架构");setBounds(100, 100, 500, 375);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JScrollPane scrollPane = new JScrollPane();getContentPane().add(scrollPane, BorderLayout.CENTER);DefaultMutableTreeNode root = new DefaultMutableTreeNode("倾诚爱家");DefaultMutableTreeNode nodeA = new DefaultMutableTreeNode("经理办公室");root.add(nodeA);DefaultMutableTreeNode nodeB = new DefaultMutableTreeNode("人事部");root.add(nodeB);DefaultMutableTreeNode nodeC = new DefaultMutableTreeNode("技术部");root.add(nodeC);nodeC.add(new DefaultMutableTreeNode("网络维护部"));nodeC.add(new DefaultMutableTreeNode("应用开发部"));DefaultMutableTreeNode nodeD = new DefaultMutableTreeNode("服务部");root.add(nodeD);nodeD.add(new DefaultMutableTreeNode("网络服务部"));nodeD.add(new DefaultMutableTreeNode("内勤开发部"));DefaultMutableTreeNode nodeE = new DefaultMutableTreeNode("推广部");root.add(nodeE);treeModel = new DefaultTreeModel(root, true);tree = new JTree(treeModel);tree.setSelectionPath(new TreePath(root));scrollPane.setViewportView(tree);final JPanel panel = new JPanel();getContentPane().add(panel, BorderLayout.SOUTH);final JLabel label = new JLabel();label.setText("名称:");panel.add(label);textField = new JTextField();textField.setColumns(8);textField.setText("测试");panel.add(textField);final JButton addButton = new JButton("添加");addButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {DefaultMutableTreeNode node = new DefaultMutableTreeNode(textField.getText());// 创建欲添加节点TreePath selectionPath = tree.getSelectionPath();// 获得选中的父节点路径DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) selectionPath.getLastPathComponent();// 获得选中的父节点treeModel.insertNodeInto(node, parentNode, parentNode.getChildCount());// 插入节点到所有子节点之后TreePath path = selectionPath.pathByAddingChild(node);// 获得新添加节点的路径if (!tree.isVisible(path))tree.makeVisible(path);// 如果该节点不可见则令其可见}});panel.add(addButton);final JButton updButton = new JButton("修改");updButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {// 获得选中的欲修改节点的路径TreePath selectionPath = tree.getSelectionPath();DefaultMutableTreeNode node = (DefaultMutableTreeNode) selectionPath.getLastPathComponent();// 获得选中的欲修改节点node.setUserObject(textField.getText());// 修改节点的用户标签treeModel.nodeChanged(node);// 通知树模型该节点已经被修改tree.setSelectionPath(selectionPath);// 选中被修改的节点}});panel.add(updButton);final JButton delButton = new JButton("删除");delButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();// 获得选中的欲删除节点// 查看欲删除的节点是否为根节点,根节点不允许删除if (!node.isRoot()) {DefaultMutableTreeNode nextSelectedNode = node.getNextSibling();// 获得下一个兄弟节点,以备选中if (nextSelectedNode == null)// 查看是否存在兄弟节点nextSelectedNode = (DefaultMutableTreeNode) node.getParent();// 如果不存在则选中其父节点treeModel.removeNodeFromParent(node);// 删除节点tree.setSelectionPath(new TreePath(nextSelectedNode.getPath()));// 选中节点}}});panel.add(delButton);//}}


原创粉丝点击