📄 main.java
字号:
package com.ciash.bms;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import com.ciash.bms.config.AppSetting;
import com.ciash.bms.db.manager.book.impl.BookDBManager;
import com.ciash.bms.db.manager.genus.impl.GenusDBManager;
import com.ciash.bms.db.manager.popedom.impl.PopedomDBManager;
import com.ciash.bms.db.manager.user.impl.UserDBManager;
import com.ciash.bms.gui.impl.BookEditDialog;
import com.ciash.bms.gui.impl.EditControlPanel;
import com.ciash.bms.gui.impl.GenusCreateDialog;
import com.ciash.bms.gui.impl.LoginDialog;
import com.ciash.bms.gui.impl.PopedomChooser;
import com.ciash.bms.gui.impl.PopedomEditDialog;
import com.ciash.bms.gui.impl.PopedomViewPanel;
import com.ciash.bms.gui.impl.UserEditDialog;
import com.ciash.bms.gui.impl.UserLoginInfoPanel;
import com.ciash.bms.gui.impl.UserPopEditDialog;
import com.ciash.bms.gui.main.MainFrame;
import com.ciash.bms.gui.menu.BMSMenuBar;
import com.ciash.bms.gui.search.BookSearchPanel;
import com.ciash.bms.gui.search.UserSearchPanel;
import com.ciash.bms.gui.search.loader.BookLoaderPanel;
import com.ciash.bms.gui.search.loader.UserLoaderPanel;
import com.ciash.bms.model.impl.BookModel;
import com.ciash.bms.model.impl.CommanPanel;
import com.ciash.bms.model.impl.GenusModel;
import com.ciash.bms.model.impl.PopedomModel;
import com.ciash.bms.model.impl.UserModel;
import com.ciash.bms.observer.impl.BookDBObserver;
import com.ciash.bms.observer.impl.GenusDBObserver;
import com.ciash.bms.observer.impl.LoginObserver;
import com.ciash.bms.observer.impl.MainMenuObserver;
import com.ciash.bms.observer.impl.PopedomDBObserver;
import com.ciash.bms.observer.impl.RegisterDBObserver;
import com.ciash.bms.observer.impl.UserDBObserver;
public class Main {
/* 程序入口类,将集合所有的前后台对象 */
// ----------------------------------------------------------------
// 数据库连接管理类
private UserDBManager userDBManager;
private BookDBManager bookDBManager;
private PopedomDBManager popedomDBManager;
private GenusDBManager genusDBManager;
//// 数据模型
private BookModel bookModel;
private GenusModel genusModel;
private UserModel userModel;
private PopedomModel popModel;
// ----------------------------------------------------------------
// GUI类c
private MainFrame mainFrame;
//// 主窗口
private BMSMenuBar menuBar;
//// 主菜单
private LoginDialog loginDialog;
//// 登陆窗口
private BookEditDialog bookEditDialog;
//// 图书添加、修改窗口
private UserEditDialog userEditDialog;
//// 用户添加、修改窗口
private UserLoginInfoPanel userLoginInfoPanel;
//// 用户登陆信息展示面板
private GenusCreateDialog genusCreateDialog;
//// 图书类创建窗口
private UserPopEditDialog userPopEditDialog;
//// 用户权限编辑对话框
private PopedomChooser popedomChooser;
//// 权限添加、修改面板
private PopedomEditDialog popedomEditDialog;
//// 权限添加、删除对话框
private EditControlPanel editPanel;
private CommanPanel commanPanel;
//// 主面板上,位于上方的按钮面板,执行添加、删除、修改等功能的面板
// 查询GUI --------------------------------------------------------
private BookLoaderPanel mainBookLoaderPanel;
//// 主窗口上的用户查询面板上的读取器面板
private UserSearchPanel mainUserSearchPanel;
//// 用户查询面板
private UserLoaderPanel mainUserLoaderPanel;
//// 主窗口上的用户查询面板上的读取器面板
private BookSearchPanel mainBookSearchPanel;
//// 书籍查询面板
// 用户权限编辑GUI --------------------------------------------------
private UserSearchPanel popEditUserSearchPanel;
//// 编辑用户用查询面板
private BookLoaderPanel showAllBookPanel;
//// 主面板中间书籍读取器
// 观察者类
private BookDBObserver bookDBObserver;
private UserDBObserver userDBObserver;
private UserDBObserver userPopEditObserver;
private RegisterDBObserver registerDBObserver;
private GenusDBObserver genusDBObserver;
private MainMenuObserver mainMenuObserver;
private LoginObserver loginObserver;
private PopedomDBObserver popedomDBObserver;
// 数据模型类
private UserLoaderPanel userPopEditLoaderPanel;
// 其他附加类
public Main() {
System.out.println("启动程序");
System.out.println("初始化并装载皮肤");
installSkin();
initDateModel();// 初始化后台组件,包括数据库连接类以及后台数据用模型
System.out.println("初始化所有用户控件");
initGUIs();
System.out.println("初始化全部控制器");
initAllControl();
System.out.println("装载全部控制器");
loadControl();
System.out.println("程序启动完毕");
mainFrame.setVisible(true);
}
// ------------------------------------------------------------------------
// 初始化后台程序
private void initDateModel() {
//方法调用顺序不能颠倒
System.out.println("初始化并装载数据库连接池");
initManager();
System.out.println("初始化并装载数据模型");
initModel();
}
private void initManager(){
userDBManager = new UserDBManager(AppSetting.connectionStringBean);
popedomDBManager = new PopedomDBManager(AppSetting.connectionStringBean);
bookDBManager = new BookDBManager(AppSetting.connectionStringBean);
genusDBManager = new GenusDBManager(AppSetting.connectionStringBean);
}
private void initModel() {
bookModel = new BookModel(bookDBManager);
genusModel = new GenusModel(genusDBManager);
userModel = new UserModel(userDBManager, popedomDBManager);
popModel = new PopedomModel(popedomDBManager);
}
// ------------------------------------------------------------------------
// 初始化前台GUI
private void initGUIs() {
// GUI初始化
mainFrame = new MainFrame();
////初始化主控窗口
initMainSeach();
////初始化主窗口上的搜索用面板
initUserInfo();
////初始化用户登陆信息展示面板
initMenuBar();
////初始化主控菜单
initUserPopEditGUIs();
//// 初始化权限编辑用GUI
/* 该方法必须在
* initMainShowPanel();
* initMainBookShower();
* initMainSearchPanel();
* 方法前调用
*/
initMainBookShower();
initMainSearchPanel();
//// 初始化主查询
////初始化编辑按钮面板
loginDialog = new LoginDialog();
//// 初始化登陆窗口
bookEditDialog = new BookEditDialog();
//// 初始化书籍创建、编辑窗口
userEditDialog = new UserEditDialog();
//// 初始化用户创建、编辑窗口
genusCreateDialog = new GenusCreateDialog();
//// 初始化图书分类添加窗口
popedomEditDialog = new PopedomEditDialog();
//// 初始化权限添加、修改窗体
initCommonPanel();
////
initEditToolPanel();
//// 初始化编辑按钮用窗体
}
private void initCommonPanel() {
commanPanel = new CommanPanel();
mainFrame.addPanelOnNorth(commanPanel);
}
////初始化主控菜单
private void initMenuBar() {
menuBar = new BMSMenuBar();
mainFrame.setJMenuBar(menuBar);
}
//初始化主窗口上的两个搜索面板
private void initMainSeach() {
//创建设置窗体上的图书搜索控件
mainBookLoaderPanel = new BookLoaderPanel();
mainBookLoaderPanel.addBookSelecter(editPanel);
mainBookSearchPanel = new BookSearchPanel();
mainBookSearchPanel.setBookLoader(mainBookLoaderPanel);
mainFrame.setBookSearchPanel(mainBookSearchPanel);
//创建设置窗体上的用户搜索控件
mainUserLoaderPanel = new UserLoaderPanel();
mainUserSearchPanel = new UserSearchPanel();
mainUserSearchPanel.setUserLoader(mainUserLoaderPanel);
mainFrame.setUserSearchPanel(mainUserSearchPanel);
}
//用户登陆后的信息展示
private void initUserInfo() {
userLoginInfoPanel = new UserLoginInfoPanel();// 用户登陆展示面板
mainFrame.setUserLoginInfoPanel(userLoginInfoPanel);
}
// 初始化用户权限编辑用GUI
// 注意,这些GUI是对用户权限进行编辑的GUI
// 与权限创建、修改无关
private void initUserPopEditGUIs() {
userPopEditLoaderPanel = new UserLoaderPanel();
// 用于编辑用户权限的用户读取面板
popEditUserSearchPanel = new UserSearchPanel();
// 权限编辑用户查询面板
popEditUserSearchPanel.setUserLoader(userPopEditLoaderPanel);
popedomChooser = new PopedomChooser(new PopedomViewPanel());
// 权限编辑面板
userPopEditDialog = new UserPopEditDialog();// 权限编辑对话框
userPopEditDialog.setUserSearchPanel(popEditUserSearchPanel);
userPopEditDialog.setPopedomChooser(popedomChooser);
userPopEditDialog.setPopedomSelecter(popedomChooser);
userPopEditLoaderPanel.addUserSelecter(popedomChooser);
}
////初始化
private void initMainBookShower(){
showAllBookPanel = new BookLoaderPanel();
mainFrame.setShowAllBookPanel(showAllBookPanel);
new Thread(){
public void run() {
showAllBookPanel.install(bookModel.findAll());
}
}.start();
}
//初始化编辑用按钮面板
private void initEditToolPanel() {
editPanel = new EditControlPanel();
mainFrame.setEditPanel(editPanel);
mainBookLoaderPanel.addBookSelecter(editPanel);
showAllBookPanel.addBookSelecter(editPanel);
mainUserLoaderPanel.addUserSelecter(editPanel);
}
//初始化主搜索面板
private void initMainSearchPanel() {
mainBookLoaderPanel = new BookLoaderPanel();
mainUserLoaderPanel = new UserLoaderPanel();
mainUserSearchPanel = new UserSearchPanel(mainUserLoaderPanel);
mainBookSearchPanel = new BookSearchPanel(mainBookLoaderPanel);
mainFrame.setUserSearchPanel(mainUserSearchPanel);
mainFrame.setBookSearchPanel(mainBookSearchPanel);
}
// ------------------------------------------------------------------------
private void initAllControl() {
initUserControl();
initGenusControl();
initBookControl();
initMenuControl();
initPopedomControl();
}
private void initPopedomControl() {
popedomDBObserver = new PopedomDBObserver();
popedomDBObserver.setPopEditUI(popedomEditDialog);
popedomDBObserver.setPopModel(popModel);
popedomDBObserver.setPopUserEditUI(userPopEditDialog);
popedomDBObserver.setUserModel(userModel);
}
//初始化主控制,包括系统退出等等
private void initMenuControl() {
mainMenuObserver = new MainMenuObserver();
mainMenuObserver.setSearchUpdater(mainFrame);
}
//初始化用户控制,包括登陆控制以及注册控制
private void initUserControl() {
initUserPopControl();
initUserSearchControl();
initLoginControl();
initRegisterControl();
}
//用户权限添加、修改控制
private void initUserPopControl() {
userPopEditObserver = new UserDBObserver();
userPopEditObserver.setSearchUI(mainUserSearchPanel);
userPopEditObserver.setUserSearchModel(userModel);
userPopEditObserver.addUserResultUpdater(userPopEditLoaderPanel);
userPopEditObserver.setSearchUI(popEditUserSearchPanel);
userPopEditObserver.setUserEditDialogUI(userEditDialog);
userPopEditObserver.setUserModifyModel(userModel);
}
// 初始化登陆控制
private void initLoginControl() {
//初始化控制器
loginObserver = new LoginObserver();
loginObserver.setLoginModel(userModel);
loginObserver.setLoginUI(loginDialog);
//初始化可通知者,即更新器
loginObserver.addLoginUpdater(mainFrame);
loginObserver.addLoginUpdater(menuBar);
loginObserver.addLoginUpdater(editPanel);
loginObserver.addLoginUpdater(editPanel);
}
//初始化用户注册控制
private void initRegisterControl() {
registerDBObserver = new RegisterDBObserver();
registerDBObserver.setRegisterModel(userModel);
registerDBObserver.setDialog(userEditDialog);
}
//初始化书籍类别管理控制
private void initGenusControl() {
genusDBObserver = new GenusDBObserver();
genusDBObserver.setGenusModel(genusModel);
genusDBObserver.setGenusUI(genusCreateDialog);
}
//初始化书籍搜索控制
private void initBookControl() {
bookDBObserver = new BookDBObserver();
bookDBObserver.setBookModel(bookModel);
bookDBObserver.setBookEditDialogUI(bookEditDialog);
bookDBObserver.setGenusModel(genusModel);
bookDBObserver.addBookResultUpdater(mainBookLoaderPanel);
bookDBObserver.setBookSearchModel(bookModel);
bookDBObserver.setSearchUI(mainBookSearchPanel);
bookDBObserver.addBookUpdater(mainBookLoaderPanel);
bookDBObserver.addBookUpdater(showAllBookPanel);
}
//用户搜索控制
private void initUserSearchControl() {
userDBObserver = new UserDBObserver();
userDBObserver.setSearchUI(mainUserSearchPanel);
userDBObserver.setUserSearchModel(userModel);
userDBObserver.addUserResultUpdater(mainUserLoaderPanel);
userDBObserver.addUserUpdater(mainUserLoaderPanel);
userDBObserver.addUserUpdater(userPopEditLoaderPanel);
}
// ----------------------------------------------------------------------
//装在控制器
private void loadControl(){
loadMenuControl();
mainUserSearchPanel.setSearchObserver(userDBObserver);
popEditUserSearchPanel.setSearchObserver(userPopEditObserver);
mainBookSearchPanel.setSearchObserver(bookDBObserver);
mainBookLoaderPanel.addBookSelecter(editPanel);
mainUserLoaderPanel.addUserSelecter(editPanel);
}
private void loadMenuControl(){
menuBar.setSystemObserver(mainMenuObserver);
menuBar.setGenusObserver(genusDBObserver);
menuBar.setLoginObserver(loginObserver);
menuBar.setRegisterObserver(registerDBObserver);
menuBar.setFindBookObserver(mainMenuObserver);
menuBar.setFindUserObserver(mainMenuObserver);
menuBar.setResultClear(mainMenuObserver);
menuBar.setEditBookObserver(bookDBObserver);
menuBar.setPopedomEditObserver(popedomDBObserver);
commanPanel.setFindBookObserver(mainMenuObserver);
commanPanel.setFindUserObserver(mainMenuObserver);
commanPanel.setResultClear(mainMenuObserver);
editPanel.setRegisterObserver(registerDBObserver);
editPanel.setUserEditObserver(userPopEditObserver);
editPanel.setBookEditObserver(bookDBObserver);
}
public void installSkin() {
try {
UIManager.setLookAndFeel("com.nilo.plaf.nimrod.NimRODLookAndFeel");
// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Main();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -