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;
}
}
评论
加载中…