package cn.com.edu.view.frame;
import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.GridBagLayout;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JToolBar;
import org.jvnet.substance.SubstanceLookAndFeel;
import org.jvnet.substance.skin.FindingNemoSkin;
import cn.com.edu.action.JMenuItemAction;
import cn.com.edu.action.MainFrameAction;
import cn.com.edu.util.GBC;
import cn.com.edu.view.panel.AddStudentInfoPanel;
import cn.com.edu.view.panel.FindStudentInfoPanel;
/**
* 教务管理系统主界面
*
* @author Administrator
*
*/
public class MainFrame extends JFrame {
private static MainFrame instance;
private JMenuBar bar;// 菜单条
private JMenu studentJMenu;// 菜单
private JMenu teacherJMenu;// 菜单
private JPanel center = new JPanel();// 中心面板用来放置卡片
private CardLayout card = new CardLayout();// 卡片布局
private JPanel west;// 西边面板
private JSplitPane split;// 分割面板
private JToolBar tool;// 工具条
private MainFrameAction action = new MainFrameAction(this);// 按钮事件对象
private JMenuItemAction menuItemAction = new JMenuItemAction(this);// 菜单事件对象
private SystemTray tray;// 系统托盘
private TrayIcon trayIcon;// 设置系统托盘的图片
/**
* 使用单子设计模式主界面对象
*
*/
private MainFrame() {
init();
}
public static MainFrame getInstance() {
if (instance == null) {
instance = new MainFrame();
}
return instance;
}
/**
* 初始化主界面
*
*/
public void init() {
// 设置标题
this.setTitle("教务管理系统");
// 设置标题图片
ImageIcon icon = new ImageIcon("img/switchuser.png");
this.setIconImage(icon.getImage());
// 得到屏幕对象
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
// 设置主界面大小
this.setSize(size.width, size.height - 20);
// 设置居中
this.setLocationRelativeTo(null);
// 添加工具条
this.add(createTool(), BorderLayout.NORTH);
// 将菜单添加到主界面
this.setJMenuBar(createJMenuBar());
// 将卡片添加到主界面
center.setLayout(card);
addCardPanel(center);
this.add(createSplit());
// 设置关闭主界面
this.setDefaultCloseOperation(this.DO_NOTHING_ON_CLOSE);
//创建系统托盘
createSystemTray();
//关闭窗口事件
closeWindow(this);
// 设置显示主界面
this.setVisible(true);
}
public JMenuBar createJMenuBar() {
if (bar == null) {
bar = new JMenuBar();
studentJMenu = createJMenu("学生管理");
teacherJMenu = createJMenu("老师管理");
addJMenuItem(studentJMenu, "添加学生信息");
addJMenuItem(studentJMenu, "查询学生信息");
addJMenuItem(studentJMenu, "修改学生信息");
addJMenuItem(studentJMenu, "删除学生信息");
studentJMenu.addSeparator();
addJMenuItem(studentJMenu, "退出");
bar.add(studentJMenu);
bar.add(teacherJMenu);
}
return bar;
}
/**
* 创建菜单
*
* @param name
* @return
*/
private JMenu createJMenu(String name) {
JMenu menu = new JMenu(name);
return menu;
}
/**
* 将创建的菜单项添加到菜单
*
* @param menu
* @param name
*/
private void addJMenuItem(JMenu menu, String name) {
JMenuItem item = new JMenuItem(name);
item.addActionListener(menuItemAction);
menu.add(item);
}
/**
* 用于添加卡片
*
* @param center
*/
public void addCardPanel(JPanel center) {
JPanel jp2 = new JPanel();
JPanel jp3 = new JPanel();
JPanel jp4 = new JPanel();
jp2.add(new JButton("卡片2"));
jp3.add(new JButton("卡片3"));
jp4.add(new JButton("卡片4"));
center.add(new AddStudentInfoPanel(), "添加学生信息");
center.add(new FindStudentInfoPanel(), "查询学生信息");
center.add(jp3, "修改学生信息");
center.add(jp4, "删除学生信息");
}
/**
* 创建西边面板,用添加选项按钮
*
* @return
*/
public JPanel createWestPanel() {
if (west == null) {
west = new JPanel();
west.setLayout(new GridBagLayout());
west.add(createButton("添加学生信息", "img/switchuser.png"),
new GBC(0, 0).setInset(10));
west.add(createButton("查询学生信息", "img/switchuser.png"),
new GBC(0, 1).setInset(10));
west.add(createButton("修改学生信息", "img/switchuser.png"),
new GBC(0, 2).setInset(10));
west.add(createButton("删除学生信息", "img/switchuser.png"),
new GBC(0, 3).setInset(10));
}
return west;
}
/**
* 创建按钮方法
*
* @param name
* @return
*/
public JButton createButton(String name, String icon) {
JButton button = new JButton(name);
button.setIcon(new ImageIcon(icon));
button.addActionListener(action);
return button;
}
public CardLayout getCard() {
return card;
}
public JPanel getCenter() {
return center;
}
/**
* 分割面板
*
* @return
*/
public JSplitPane createSplit() {
if (split == null) {
split = new JSplitPane();
split.setOneTouchExpandable(true);
split.setLeftComponent(createWestPanel());
split.setRightComponent(center);
}
return split;
}
/**
* 创建工具条
*
* @return
*/
public JToolBar createTool() {
if (tool == null) {
tool = new JToolBar();
tool.add("添加学生信息", createButton("添加学生信息", "img/switchuser.png"));
tool.add("查询学生信息", createButton("查询学生信息", "img/switchuser.png"));
tool.add("修改学生信息", createButton("修改学生信息", "img/switchuser.png"));
tool.add("删除学生信息", createButton("删除学生信息", "img/switchuser.png"));
tool.add("帮助", createButton("帮助", "img/syssetup.png"));
}
return tool;
}
///////////////////////////系统托盘设置/////////////////////////////////////
/**
* 窗口事件
*
* @param jframe
*/
public void closeWindow(MainFrame jframe) {
jframe.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
int show = JOptionPane.showConfirmDialog(null, "是否确定关闭?",
"确认关闭系统", JOptionPane.YES_NO_OPTION);
if (show == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
public void windowIconified(WindowEvent e) {
if (getState() == 1) {// 最小化
try {
tray.add(trayIcon);
} catch (AWTException e1) {
e1.printStackTrace();
}
setVisible(false);
}
}
});
}
/**
* 创建系统托盘
*
*/
public void createSystemTray() {
// 得到当前系统的托盘对象
tray = SystemTray.getSystemTray();
ImageIcon icon = new ImageIcon("img/2.png");
// 添加鼠标右键 弹出菜单
PopupMenu menu = new PopupMenu();
MenuItem show = new MenuItem("显示窗体");
MenuItem exit = new MenuItem("退出窗体");
trayIcon = new TrayIcon(icon.getImage(), "学生管理系统", menu);
trayIcon.addMouseListener(new MouseAdapter() {
/**
* 鼠标点击事件
*/
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {// 鼠标双击
tray.remove(trayIcon);
setVisible(true);
// 设置窗口全屏
setExtendedState(JFrame.MAXIMIZED_BOTH);
}
}
});
/**
*鼠标右键显示窗体
*/
show.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
tray.remove(trayIcon);
setVisible(true);
// 设置窗口全屏
setExtendedState(JFrame.MAXIMIZED_BOTH);
}
});
/**
* 鼠标右键关闭窗体
*/
exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int show = JOptionPane.showConfirmDialog(null, "是否确定关闭?",
"确认关闭系统", JOptionPane.YES_NO_OPTION);
if (show == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
});
menu.add(show);
menu.add(exit);
}
/**
* @param args
*/
public static void main(String[] args) {
SubstanceLookAndFeel.setSkin(new FindingNemoSkin());
// 蓝色幽灵
// SubstanceLookAndFeel.setSkin(new OfficeBlue2007Skin());
// 麦田风光
// SubstanceLookAndFeel.setSkin(new FieldOfWheatSkin());
// 默认皮肤
// SubstanceLookAndFeel.setSkin(new BusinessSkin());
// 朦胧风格
// SubstanceLookAndFeel.setSkin(new MistAquaSkin());
MainFrame.getInstance();
}
}