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

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;

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值