📄 mainframe.java
字号:
package librarymanagement.view.frame;
import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Insets;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
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.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.tree.DefaultMutableTreeNode;
import com.sunking.swing.JStatusBar;
import librarymanagement.action.BaseMangaMenuAction;
import librarymanagement.action.MainFrameToolBarAction;
import librarymanagement.common.LogCommon;
import librarymanagement.common.LogWriter;
import librarymanagement.view.common.Appreance;
import librarymanagement.view.common.ButtonCommon;
import librarymanagement.view.common.Time;
/**
* 主面板设计
*
* @author 曾荣廷
*
*/
public class MainFrame extends JFrame {
private static MainFrame mainFram;// 构造一个私有对象
private static JMenuBar menuBar;// 菜单栏
private static JMenu bookManageMenu, toolMenu, SystemManageMenu, helpMenu;
private static JToolBar toolBar;// 工具条
private TrayIcon trayIcon = null; // 托盘图标
private SystemTray tray = null; // 本操作系统托盘的实例
private JTree tree;
JPanel toolBarPanel;
JPopupMenu popupMenu = new JPopupMenu();
private static LogWriter lw;
/**
* 获得页面对象的公有方法
*
* @return mainFram
*/
public static void main(String[] args) {
new MainFrame().setVisible(true);
}
public static MainFrame getMainFrame() {
if (mainFram == null) {
mainFram = new MainFrame();
}
return mainFram;
}
/**
* 私有构造函数
*/
private MainFrame() {
super("图书馆管理系统");
lw = new LogWriter("主界面", LogCommon.getPrintWriteInstance());
lw.log(LogCommon.getCurrentTime() + "进入系统主界面运行!");
new Appreance(0);
// Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
this.setSize(1024, 750/*
* (int) screenSize.getWidth(), (int)
* screenSize.getHeight()
*/);
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
// this.setVisible(true);
ImageIcon icon = new ImageIcon("img/系统图标.jpg");
this.setIconImage(icon.getImage());
init();
tray();
closeWindow(this);
}
/**
* 构造主页面对象
*/
public void init() {
this.setLayout(new BorderLayout());
this.setJMenuBar(buildMenuBar());
this.add(buildToolBar(), "North");
this.add(buildImagePanel("img/panelimg/panel3.jpg"));
this.add(buildStatusBar(), "South");
}
private JTree buildTree() {
if (tree == null) {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("书馆管理");
DefaultMutableTreeNode note1 = new DefaultMutableTreeNode("还书管理");
DefaultMutableTreeNode note2 = new DefaultMutableTreeNode("借书管理");
DefaultMutableTreeNode note3 = new DefaultMutableTreeNode("图书查询");
root.add(note1);
root.add(note2);
root.add(note3);
tree = new JTree(root);
}
return tree;
}
/**
* 创建状态栏;
*
* @return 返回JStatusBar 对象;
*/
public JStatusBar buildStatusBar() {
JStatusBar j = new JStatusBar();
j.addStatusCell(300);
j.addStatusCell(300);
j.addStatusCell(400);
j.setStatus(0, "多功能图书馆管理系统");
j.setStatus(1, "中信教育问鼎全国");
j.setStatus(2, "曾荣廷,虎兴龙,陈兵,廖运球最佳拍档!");
return j;
}
/**
* 构造工具條
*
* @return toolBar
*/
public JToolBar buildToolBar() {
if (toolBar == null) {
toolBar = new JToolBar();
toolBar.add(buildToolBarPanel());
toolBar.setFloatable(false);
}
return toolBar;
}
/**
* 构建工具栏面板
*
* @return 返回JPanel 对象
* @param 构建工具栏面板是为了突出按钮的效果 ;
*/
private JPanel buildToolBarPanel() {
if (toolBarPanel == null) {
Icon i1 = new ImageIcon("img/toolbarimg/设置.png");
// Icon i2 = new ImageIcon("img/toolbarimg/帮助.jpg");
Icon i3 = new ImageIcon("img/toolbarimg/借书.jpg");
Icon i4 = new ImageIcon("img/toolbarimg/还书.jpg");
Icon i5 = new ImageIcon("img/toolbarimg/图书管理.jpg");
Icon i6 = new ImageIcon("img/toolbarimg/读者管理.jpg");
Icon i7 = new ImageIcon("img/toolbarimg/退出.jpg");
Icon i8 = new ImageIcon("img/toolbarimg/clock.jpg");
toolBarPanel = new JPanel();
toolBarPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 2));
toolBarPanel.add(buildBtn(i3, "借书"));
toolBarPanel.add(buildBtn(i4, "还书"));
toolBarPanel.add(buildBtn(i5, "图书管理"));
toolBarPanel.add(buildBtn(i6, "读者管理"));
//toolBarPanel.add(buildBtn(i1, "书馆信息设置"));
// toolBarPanel.add(buildBtn(i2, "帮助"));
toolBarPanel.add(buildBtn(i7, "退出系统"));
toolBarPanel.add(new JLabel(i8));
JLabel j = new JLabel();
new Time(j);
toolBarPanel.add(j);
}
return toolBarPanel;
}
/**
* 构造菜单栏
*
* @return menuBar
*/
public JMenuBar buildMenuBar() {
if (menuBar == null) {
menuBar = new JMenuBar();
menuBar.add(buildBookMangerMenu("基本管理"));
menuBar.add(buildSystemManageMenu("系统设置"));
menuBar.add(buildToolMenu("工具"));
menuBar.add(buildHelpMenu("帮助"));
}
return menuBar;
}
private JMenu buildHelpMenu(String string) {
if (helpMenu == null) {
helpMenu = new JMenu(string);
helpMenu.add(buildItems("购买软件"));
helpMenu.add(buildItems("使用帮助"));
helpMenu.add(buildItems("关于我们"));
helpMenu.setFont(new Font("隶书", Font.CENTER_BASELINE, 16));
}
return helpMenu;
}
/**
* 菜单栏条目
*
* @param string
* @return
*/
private JMenu buildToolMenu(String string) {
if (toolMenu == null) {
toolMenu = new JMenu(string);
toolMenu.add(buildItems("记事本"));
toolMenu.add(buildItems("计算器"));
toolMenu.add(buildItems("打印机"));
toolMenu.setFont(new Font("隶书", Font.CENTER_BASELINE, 16));
}
return toolMenu;
}
/**
* 根據傳入的參數構造菜單
*
* @param name
* @return menu
*/
public JMenu buildBookMangerMenu(String name) {
if (bookManageMenu == null) {
bookManageMenu = new JMenu(name);
bookManageMenu.add(buildItems("借阅"));
bookManageMenu.add(buildItems("还书"));
bookManageMenu.add(buildItems("续借"));
bookManageMenu.add(buildItems("添加图书"));
bookManageMenu.add(buildItems("增加读者"));
bookManageMenu.add(buildItems("读者管理"));
bookManageMenu.add(buildItems("图书管理"));
bookManageMenu.add(buildItems("退出"));
bookManageMenu.setFont(new Font("隶书", Font.CENTER_BASELINE, 16));
}
return bookManageMenu;
}
/**
*
* @param string
* 菜单名
* @return
*/
private JMenu buildSystemManageMenu(String string) {
if (SystemManageMenu == null) {
SystemManageMenu = new JMenu(string);
SystemManageMenu.add(buildItems("书馆信息设置"));
SystemManageMenu.add(buildItems("系统初始化"));
SystemManageMenu.add(buildItems("读者类别"));
SystemManageMenu.add(buildItems("存放位置"));
SystemManageMenu.setFont(new Font("隶书", Font.CENTER_BASELINE, 16));
}
return SystemManageMenu;
}
/**
* 构建菜单项
*
* @param name
* 菜单项名称
* @return
*/
private JMenuItem buildItems(String name) {
JMenuItem i = new JMenuItem(name);
// i.setActionCommand(name);
i.setFont(new Font("宋体", Font.PLAIN, 14));
i.addActionListener(new BaseMangaMenuAction(this));
return i;
}
/**
* 根據參數構造按鈕
*
* @param name
* @return btn
*/
public JButton buildBtn(Icon icon, String tip) {
JButton btn = new ButtonCommon(icon, tip);
btn.setFont(new Font("宋体", Font.PLAIN, 14));
btn.setActionCommand(tip);
btn.addActionListener(new MainFrameToolBarAction(this));
// btn.setEnabled(true);
return btn;
}
/**
*
* @param img
* Panel图片
* @param btnIcon1
* 按钮初始图片
* @param btnIcon2
* 鼠标在按钮上时按钮图片
* @param actionCommand
* 按钮actionCommond
* @return
*/
public JPanel buildImagePanel(String img) {
JPanel imagePanel = new ImagePanel(img);
popupMenu.add(buildItems("借书"));
popupMenu.add(buildItems("还书"));
popupMenu.add(buildItems("查寻书籍"));
popupMenu.add(buildItems("退出"));
popupMenu.add(buildItems("关于本软件"));
imagePanel.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
checkForTriggerEvent(e);
}
public void mouseReleased(MouseEvent e) {
checkForTriggerEvent(e);
}
private void checkForTriggerEvent(MouseEvent e) {
if (e.isPopupTrigger()) {
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
});
return imagePanel;
}
/**
*
* @param btnIcon
* 按钮初始图片
* @param btnIcon2
* 鼠标在按钮上时按钮图片
* @param actionCommand
* 按钮事件
* @return
*/
public JButton buildPanelBtn(Icon btnIcon, Icon btnIcon2,
String actionCommand) {
JButton b = new JButton(btnIcon);
b.setActionCommand(actionCommand);
b.setRolloverEnabled(true);
b.setRolloverIcon(btnIcon2);
b.setMargin(new Insets(15, 15, 15, 15));
return b;
}
/**
* 构造带有背景图片的内部类
*
* @author 虎兴龙
*
*/
class ImagePanel extends JPanel {
ImageIcon icon;
/**
* 内部类构造方法
*
* @param image
* panel背景图片路径
*/
public ImagePanel(String image) {
icon = new ImageIcon(image);
setSize(icon.getIconWidth(), icon.getIconHeight());
this.setBorder(BorderFactory.createLineBorder(Color.ORANGE, 10));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Image i = icon.getImage();
g.drawImage(i, 0, 0, this);
}
}
/**
* 最小化整個系統
*/
public void tray() {
tray = SystemTray.getSystemTray(); // 获得本操作系统托盘的实例
ImageIcon icon = new ImageIcon("img/图标.jpg"); // 将要显示到托盘中的图标
PopupMenu pop = new PopupMenu(); // 构造一个右键弹出式菜单
MenuItem show = new MenuItem("显示主页面");
MenuItem exit = new MenuItem("退出系统");
MenuItem about = new MenuItem("关于软件");
MenuItem ab = new MenuItem("设置");
trayIcon = new TrayIcon(icon.getImage(), "图书馆管理系统", pop);
trayIcon.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) { // 鼠标双击
tray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标
setVisible(true); // 显示窗口
}
}
});
show.addActionListener(new ActionListener() { // 点击“显示窗口”菜单后将窗口显示出来
public void actionPerformed(ActionEvent e) {
tray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标
setVisible(true); // 显示窗口
}
});
exit.addActionListener(new ActionListener() { // 点击“退出演示”菜单后推出程序
public void actionPerformed(ActionEvent e) {
System.exit(0); // 退出程序
}
});
pop.add(about);
pop.add(ab);
pop.add(show);
pop.add(exit);
}
/**
* 窗口关闭
*/
public void closeWindow(MainFrame test) {
test.addWindowListener(new WindowAdapter() {
public void windowDeiconified(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
try {
if (getState() == 1) {// 最小化状态
tray.add(trayIcon);
setVisible(false); // 使窗口不可视
setState(0);// 切换成正常状态
}
} catch (AWTException e1) {
e1.printStackTrace();
} // 将托盘图标添加到系统的托盘实例中
}
public void windowClosing(WindowEvent e) {
int ch = JOptionPane.showConfirmDialog(null, "你是否真的要退出系统",
"关闭确定?", JOptionPane.YES_NO_OPTION);
if (ch == JOptionPane.YES_OPTION) {
System.exit(0);
} else {
return;
}
}
});
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -