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();
}
}