package com.jnzyjsxy.test; import java.awt.AWTError; import java.awt.AWTEvent; import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.Image; import java.awt.MediaTracker; import java.awt.Panel; import java.awt.Toolkit; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.net.URL; import java.net.URLClassLoader; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; /* * 人事管理系统主界面 */ import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import com.jnzyjsxy.node1.Node11Panel; public class HrMain extends JFrame implements TreeSelectionListener{ private static final URLClassLoader URLClassLoader = null; //框架大小 Dimension faceSize=new Dimension(650, 450); //程序图标 Image icon; //建立JTree目录树对象 JTree tree; //书数据结构中的通用节点 //字面含义,默认可变的树节点类 DefaultMutableTreeNode root;//人事管理系统根节点 DefaultMutableTreeNode node1;//基本信息管理 DefaultMutableTreeNode node2;//人员管理节点 DefaultMutableTreeNode node3;//人员考核管理 DefaultMutableTreeNode node4;//劳资管理 DefaultMutableTreeNode node5;// DefaultMutableTreeNode leafnode;//二级节点 TreePath treePath;//节点路径类 //主界面面板 //JSplitPane 用于分割两个(只能是两个)Component //两个Component图形化分割 //并且这两个Component可以由用户交互式调整大小 //split--分裂,拆分 public static JSplitPane splitPane; JPanel panel1;//在左侧放目录树 JPanel panel2; JPanel panel3;//在右侧显示选择节点后的界面 //用于显示欢迎信息的标签 JLabel welcome=new JLabel(); //滚动面板对象 JScrollPane scrollPane; /* * 构造方法(non-Javadoc) * @see java.awt.Window#pack() */public HrMain() { // TODO Auto-generated constructor stub //启动窗体事件隐藏 mask-面具,隐藏 //要是没有enableEvents(AWTEvent.WIDOW_EVENT_MASK); //只要有addActionListener()方法,窗体也就拥有该方法 //本项目通过选择目录树触发活动事件 enableEvents(AWTEvent.WINDOW_EVENT_MASK); //添加框架的关闭时间处理 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //窗口自适应大小 使窗体能正好显示里面的所有控件 this.pack(); //设置框架的大小 this.setSize(faceSize); //设置窗体的标题 this.setTitle("人事管理系统"); //调用自定义的方法GetImage() ,获取图标文件 //icon=getImage("common/icon.png"); //设置窗体图标 this.setIconImage(icon); //设置不能调整窗体的大小 this.setResizable(false); try { Init();//调用初始化方法 } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } /* * 初始化方法 创建左侧菜单树 */ private void Init() { // TODO Auto-generated method stub //初始化树形节点 root=new DefaultMutableTreeNode("人事管理系统"); node1=new DefaultMutableTreeNode("基本信息管理"); node2=new DefaultMutableTreeNode("人员调动管理"); node3=new DefaultMutableTreeNode("人员考核管理"); node4=new DefaultMutableTreeNode("劳资管理"); //添加基本信息管理节点到认识管里系统根节点 root.add(node1); //添加耳机节点 并添加到基本信息管理一级节点上 leafnode=new DefaultMutableTreeNode("添加人员信息"); node1.add(leafnode); leafnode=new DefaultMutableTreeNode("修改人员信息"); node1.add(leafnode); leafnode=new DefaultMutableTreeNode("删除人员信息"); node1.add(leafnode); leafnode=new DefaultMutableTreeNode("查询人员信息"); node1.add(leafnode); leafnode=new DefaultMutableTreeNode("部门管理"); node1.add(leafnode); //添加人员调动节点到根节点 root.add(node2); leafnode=new DefaultMutableTreeNode("人员调动"); node2.add(leafnode); leafnode=new DefaultMutableTreeNode("调动历史查询"); node2.add(leafnode); root.add(node3); leafnode=new DefaultMutableTreeNode("人员考核"); node3.add(leafnode); leafnode=new DefaultMutableTreeNode("考核历史查询"); node3.add(leafnode); root.add(node4); leafnode=new DefaultMutableTreeNode("劳资分配管理"); node4.add(leafnode); leafnode=new DefaultMutableTreeNode("劳资历史查询"); node4.add(leafnode); //创建目录树管理 以root为跟节点 tree=new JTree(root); //添加tree到滚动面板 即菜单树内容多时 出现滚动条 scrollPane=new JScrollPane(tree); //设置滚动面板大小 scrollPane.setPreferredSize(new Dimension(150, 400)); //setselectionMode()-设置树的模型 //TreeSelectionModel.SINGLE_TREE_SELECTION,单选 //还可以是:CONTIGUOUD_TREE_SELECTION 连续多线 //或 DISCONTIGUONS_TREE_SELECTION 多选 可不连续 tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); //初始化Panel面板 panel1=new JPanel();//左侧面板 panel2=new JPanel();//没用到该面板 panel3=new JPanel();//右侧面板 panel1.add(scrollPane);//显示目录树 ,目录树在滚动面板上 welcome.setText("欢迎使用人事管理系统"); welcome.setFont(new Font("Dialog", 0, 16)); panel3.add(welcome);//加到panel3面板上 //创建分割面板 splitPane=new JSplitPane(); //设置oneTouchExpandable属性的值 Expandable--展开式 //要使JsplitPane在分割条上提供一个小部件快速展开/折叠分割条 次属性必须为true splitPane.setOneTouchExpandable(false); //设置连续布局为true //如果分割条改变位置是逐渐连续重绘 splitPane.setContinuousLayout(true); //设置分割面板的大小 splitPane.setPreferredSize(new Dimension(150, 400)); //设置分割面板的方向--水平分割 splitPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT); //设置分割面板左侧组件-panel1 左侧组件-panel3 splitPane.setLeftComponent(panel1); splitPane.setRightComponent(panel3); //设置分割面板分割条大小 splitPane.setDividerSize(2); //设置分割条的位置 divider--分割线 //可以将数值分别设定为150,161,171进行测试 查看效果 splitPane.setDividerLocation(161); //生成主界面 等价this.add(spitpane) this.setContentPane(splitPane); this.setVisible(true); //添加目录树选择事件监听 tree.addTreeSelectionListener(this); //设置关闭操作监听代码 this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } /* * Jtree事件处理 * addTreeSelectionListener增加目录树监听 必须实现的方法 * (non-Javadoc) * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent) */ @Override public void valueChanged(TreeSelectionEvent tse) { // TODO Auto-generated method stub //定义默认书节点对象 //tse--在目录树中选择触发的时间 //tse.getPath.getLatPathComponent //--返回在目录树的节点 DefaultMutableTreeNode dnode=(DefaultMutableTreeNode) tse.getPath().getLastPathComponent(); //在控制台输出选中的节点 System.out.println("dnode="+dnode); //获取节点名称 转换成字符串 String node_str=dnode.toString(); //如果选择的节点为人事管理系统 if (node_str=="人事管理系统") { //设置分割面板右侧组件为panel3 //显示欢迎使用认识管理系统 splitPane.setRightComponent(panel3); } else if (node_str=="基本信息管理") { treePath = new TreePath(node1.getPath()); if (tree.isExpanded(treePath)) { tree.collapsePath(treePath); } else { tree.expandPath(treePath); } } else if (node_str=="添加人员信息") { Node11Panel node11Panel = new Node11Panel(); splitPane.setRightComponent(node11Panel); } } /** * 通过给定的文件名获得图像 */ Image getImage(String filename){ URLClassLoader urlLoader=(URLClassLoader); this.getClass().getClassLoader(); URL url=null; Image image=null; url=urlLoader.findResource(filename); image=Toolkit.getDefaultToolkit().getImage(url); MediaTracker mediaTracker=new MediaTracker(this); try { mediaTracker.addImage(image, 0); mediaTracker.waitForID(0); }catch (InterruptedException _ex){ image=null; } if (mediaTracker.isErrorID(0)) { image=null; } return image; } }

庞玉栋个人博客、人生苦短-我用Python