📄 treeedittest.java~16~
字号:
/** * * <p>Title:TreeEditTest </p> * * <p>Description: 实现对树型结构的添加和删除</p> * * <p>Copyright: Copyright (c) 2006</p> * * <p>Company: Spring </p> * * @author : Spring * @version 1.0 */import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.tree.*;public class TreeEditTest{ public static void main(String[] args){ JFrame frame = new TreeEditFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); }}class TreeEditFrame extends JFrame{ public TreeEditFrame(){ setTitle("TreeEditTest"); setSize(WIDTH,HEIGHT); TreeNode root = makeSampleTree(); //创建默认树型样式 model = new DefaultTreeModel(root); tree = new JTree(model); tree.setEditable(true); //创建可滚动面板 JScrollPane scrollPane = new JScrollPane(tree); getContentPane().add(scrollPane,BorderLayout.CENTER); makeButtons(); } /** * Description : 创建树型结构 * @return TreeNode */ public TreeNode makeSampleTree(){ //创建根节点 DefaultMutableTreeNode root = new DefaultMutableTreeNode("world"); DefaultMutableTreeNode country = new DefaultMutableTreeNode("USA"); root.add(country); //创建三层子节点 DefaultMutableTreeNode state = new DefaultMutableTreeNode("California"); country.add(state); DefaultMutableTreeNode city = new DefaultMutableTreeNode("San Jose"); state.add(city); city = new DefaultMutableTreeNode("Cupertino"); state.add(city); //新增一州 state = new DefaultMutableTreeNode("Michigan"); country.add(state); city = new DefaultMutableTreeNode("An Arbor"); state.add(city); //新增一国 country = new DefaultMutableTreeNode("Germany"); root.add(country); state = new DefaultMutableTreeNode("Schleswig-Holstern"); country.add(state); city = new DefaultMutableTreeNode("kiel"); state.add(city); return root;} public void makeButtons(){ JPanel panel = new JPanel(); JButton addSiblingButton = new JButton("Add Sibling"); addSiblingButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if(selectedNode == null) return ; DefaultMutableTreeNode parent =(DefaultMutableTreeNode) selectedNode.getParent(); if(parent == null) return ; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New"); int selectedIndex = parent.getIndex(selectedNode); model.insertNodeInto(newNode,parent, selectedIndex + 1); TreeNode[] nodes = model.getPathToRoot(newNode); TreePath path = new TreePath(nodes); tree.scrollPathToVisible(path); } }); panel.add(addSiblingButton); JButton addChildButton = new JButton("Add Child"); addChildButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if(selectedNode == null) return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New"); model.insertNodeInto(newNode,selectedNode, selectedNode.getChildCount()); TreeNode[] nodes = model.getPathToRoot(newNode); TreePath path = new TreePath(nodes); tree.scrollPathToVisible(path); } }); panel.add(addChildButton); JButton deleteButton = new JButton("Delete"); deleteButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if(selectedNode!=null && selectedNode.getParent() !=null) model.removeNodeFromParent(selectedNode); } }); panel.add(deleteButton); getContentPane().add(panel,BorderLayout.SOUTH); } private DefaultTreeModel model; private JTree tree; private static final int WIDTH = 400; private static final int HEIGHT = 200;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -