⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainframe.java

📁 一个简单的图书馆的管理系统,该系统主要是针对学校的图书馆而做的
💻 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 + -