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

HrMain.java系统主界面类,采用树形目录结构。

发布时间:8年前热度: 1131 ℃评论数:

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

系统,运行,包含

手机扫码访问