一个简单的java swing 做的 树模型


package swing_advance;
import javax.swing.*;
import javax.swing.text.DefaultTextUI;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Enumeration;

public class OrderTree extends JFrame{
	public OrderTree(){
		Container c =getContentPane();
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		setSize(300,500);
		
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
		DefaultMutableTreeNode leaf1level1 = new DefaultMutableTreeNode("人事管理");
		DefaultMutableTreeNode leaf2level1 = new DefaultMutableTreeNode("待遇管理");
		DefaultMutableTreeNode leaf3level1 = new DefaultMutableTreeNode("系统维护");
		DefaultMutableTreeNode leaf1level2 = new DefaultMutableTreeNode("账套管理");
		DefaultMutableTreeNode leaf2level2 = new DefaultMutableTreeNode("考勤管理");
		DefaultMutableTreeNode leaf3level2 = new DefaultMutableTreeNode("奖惩管理");
		DefaultMutableTreeNode leaf4level2 = new DefaultMutableTreeNode("培训管理");
		DefaultMutableTreeNode leaf5level2 = new DefaultMutableTreeNode("帐套管理");
		DefaultMutableTreeNode leaf6level2 = new DefaultMutableTreeNode("人员设置");
		DefaultMutableTreeNode leaf7level2 = new DefaultMutableTreeNode("待遇报表");
		DefaultMutableTreeNode leaf8level2 = new DefaultMutableTreeNode("企业架构");
		DefaultMutableTreeNode leaf9level2 = new DefaultMutableTreeNode("系统初始化");
		DefaultMutableTreeNode leaf10level2 = new DefaultMutableTreeNode("基本资料");
		root.add(leaf1level1);
		root.add(leaf2level1);
		root.add(leaf3level1);
		leaf1level1.add(leaf1level2);
		leaf1level1.add(leaf2level2);
		leaf1level1.add(leaf3level2);
		leaf1level1.add(leaf4level2);
		
		leaf2level1.add(leaf5level2);
		leaf2level1.add(leaf6level2);
		leaf2level1.add(leaf7level2);
		
		leaf3level1.add(leaf8level2);
		leaf3level1.add(leaf9level2);
		leaf3level1.add(leaf10level2);
		
		final DefaultTreeModel treemodel =new DefaultTreeModel(root);
		final JTree tree = new JTree(treemodel);
		c.add(tree, BorderLayout.CENTER);
		
		tree.setRootVisible(false);
		tree.setRowHeight(20);
		tree.setFont(new Font("宋体",Font.BOLD,14));
		DefaultTreeCellRenderer treecell= (DefaultTreeCellRenderer) tree.getCellRenderer();
		treecell.setLeafIcon(null);
		treecell.setClosedIcon(null);
		treecell.setOpenIcon(null);
		Enumeration<?> enu=root.preorderEnumeration();
		while(enu.hasMoreElements()){
			DefaultMutableTreeNode treenode=(DefaultMutableTreeNode) enu.nextElement();
			if(!treenode.isLeaf()){
				System.out.println(treenode.getUserObject());
				TreePath path=new TreePath(treenode.getPath());
				tree.expandPath(path);
			}
		}
		
		setVisible(true);
		
		Panel panel=new Panel();
		panel.setLayout(new FlowLayout());
//		panel.setSize(300, 50);
		panel.setSize(new Dimension(300,50));
		c.add(panel, BorderLayout.SOUTH);
		final JTextField text= new JTextField(10);
		panel.add(text);
		final JButton addbutton = new JButton("添加");
		final JButton modifybutton = new JButton("修改");
		final JButton deletebutton = new JButton("删除");
		panel.add(addbutton);
		panel.add(modifybutton);
		panel.add(deletebutton);
		addbutton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				DefaultMutableTreeNode treenode =new DefaultMutableTreeNode(text.getText());
				TreePath selectionpath= tree.getSelectionPath();   //返回被选中node 的路径 
				DefaultMutableTreeNode parentnode= (DefaultMutableTreeNode) selectionpath.getLastPathComponent(); //返回路径中的最后一个元素
				System.out.println(selectionpath.getLastPathComponent());//print last path
				treemodel.insertNodeInto(treenode, parentnode, parentnode.getChildCount());
				TreePath path= selectionpath.pathByAddingChild(treenode);
				if(!tree.isVisible(path)){
					tree.makeVisible(path);
				}
			}
		});
		modifybutton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				TreePath selectionpath= tree.getSelectionPath();
				DefaultMutableTreeNode treenode=(DefaultMutableTreeNode) selectionpath.getLastPathComponent();
				treenode.setUserObject(text.getText());
				treemodel.nodeChanged(treenode);
				tree.setSelectionPath(selectionpath);
			}
		});
		deletebutton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				DefaultMutableTreeNode treenode = (DefaultMutableTreeNode) tree.getSelectionPath().getLastPathComponent();
				//获得想要删除的node
				if(!treenode.isRoot()){
					DefaultMutableTreeNode nexttreenode= treenode.getNextSibling();
					if(nexttreenode==null){
						nexttreenode=(DefaultMutableTreeNode) treenode.getParent();						
					}
					treemodel.removeNodeFromParent(treenode);
					tree.setSelectionPath(new TreePath(nexttreenode.getPath()));
				}
			}
		});
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new OrderTree();
	}

}


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值