editMenu.add(bookTypeAdd);//在顶层菜单中添加子菜单 在主窗体中工具栏的创建也非常简单。工具栏为系统提供了迅速访问常用命令的一系列按钮。可以使用如下代码创建工具栏:
JToolBar bar=new JToolBar();
完成主窗体中工具栏的创建后同样需要添加MenuActions类对象实现工具栏事件,由于需要在工具栏中添加图标,所以将动作对象添加到按钮组件中,然后为按钮设置图标。例如:
//将图书信息修改对象附加给按钮组件 JButton bookModiAndDelButton=new JButton(MenuActions.BOOK_MODIFY);
//创建图标方法
ImageIcon bookmodiicon=CreatecdIcon.add(\bookModiAndDelButton,setIcon(bookmodiicon);//为按钮设置图标 BookModiAndDelButton.setHideActionText(true);//使按钮文字隐藏 最后将按钮添加到工具栏中:
toolBar.add(bookModiAndDelButton);
主窗体的实现过程:
1:创建Library类,在它的构造函数中设置主窗体相关属性,如窗体大小,窗体标题等相关属性,还可以为窗体设置背景图片,并调用创建菜单栏与工具栏的方法,在主窗体中创建菜单栏与工具栏关键代码如下:
public Library() { super();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//setModalExclusionType(ModalExclusionType.APPLICATION_EXCLUDE); setLocationByPlatform(true); setSize(800, 600);
setTitle(\图书馆管理系统\);
JMenuBar menuBar = createMenu(); // 调用创建菜单栏的方法 setJMenuBar(menuBar);
JToolBar toolBar = createToolBar(); // 调用创建工具栏的方法 getContentPane().add(toolBar, BorderLayout.NORTH); final JLabel label = new JLabel(); label.setBounds(0, 0, 0, 0); label.setIcon(null); // 窗体背景
DESKTOP_PANE.addComponentListener(new ComponentAdapter() { public void componentResized(final ComponentEvent e) { Dimension size = e.getComponent().getSize(); label.setSize(e.getComponent().getSize());
label.setText(\width=\ + size.width + \height=\ + size.height + \
+ this.getClass().getResource(\)
}
+ \); } });
DESKTOP_PANE.add(label,new Integer(Integer.MIN_VALUE)); getContentPane().add(DESKTOP_PANE);
2:编写创建菜单栏方法,可以初始化JMenuBar类对象创建顶层菜单,并在顶层菜单上添加相关菜单项与子菜单,然后为菜单栏添加图标,为菜单栏添加图标可以使用JMenu类中的setIcon()方法进行添加。关键代码如下:
private JMenuBar createMenu() { // 创建菜单栏的方法 JMenuBar menuBar = new JMenuBar();
JMenu bookOrderMenu = new JMenu(); // 初始化新书订购管理菜单 bookOrderMenu.setIcon(CreatecdIcon.add(\)); bookOrderMenu.add(MenuActions.NEWBOOK_ORDER);
bookOrderMenu.add(MenuActions.NEWBOOK_CHECK_ACCEPT);
JMenu baseMenu = new JMenu();// 初始化基础数据维护菜单 baseMenu.setIcon(CreatecdIcon.add(\)); { }
JMenu readerManagerMItem = new JMenu(\读者信息管理\); readerManagerMItem.add(MenuActions.READER_ADD); readerManagerMItem.add(MenuActions.READER_MODIFY); JMenu bookTypeManageMItem = new JMenu(\图书类别管理\); bookTypeManageMItem.add(MenuActions.BOOKTYPE_ADD); bookTypeManageMItem.add(MenuActions.BOOKTYPE_MODIFY); JMenu menu = new JMenu(\图书信息管理\); menu.add(MenuActions.BOOK_ADD); menu.add(MenuActions.BOOK_MODIFY); baseMenu.add(readerManagerMItem); baseMenu.add(bookTypeManageMItem); baseMenu.add(menu);
baseMenu.addSeparator();
baseMenu.add(MenuActions.EXIT);
JMenu borrowManageMenu = new JMenu(); // 借阅管理
borrowManageMenu.setIcon(CreatecdIcon.add(\)); borrowManageMenu.add(MenuActions.BORROW); // 借阅 borrowManageMenu.add(MenuActions.GIVE_BACK); // 归还
}
}
borrowManageMenu.add(MenuActions.BOOK_SEARCH); // 搜索 JMenu sysManageMenu = new JMenu(); // 系统维护
sysManageMenu.setIcon(CreatecdIcon.add(\)); JMenu userManageMItem = new JMenu(\用户管理\); // 用户管理 userManageMItem.add(MenuActions.USER_ADD); userManageMItem.add(MenuActions.USER_MODIFY); sysManageMenu.add(MenuActions.MODIFY_PASSWORD); sysManageMenu.add(userManageMItem);
menuBar.add(baseMenu); // 添加基础数据维护菜单到菜单栏
menuBar.add(bookOrderMenu); // 添加新书订购管理菜单到菜单栏 menuBar.add(borrowManageMenu); // 添加借阅管理菜单到菜单栏 menuBar.add(sysManageMenu); // 添加系统维护菜单到菜单栏 return menuBar;
3:编写创建工具栏的方法,创建工具栏可以使用JToolBar类,创建工具栏后将所有的图标添加到工具栏中,可以为每个图标添加提示信息。由于在创建MenuActions类时已经为每个内部窗体动作添加了提示信息,关键代码如下: /**
* 创建工具栏 *
* @return JToolBar */
private JToolBar createToolBar() { // 创建工具栏的方法 JToolBar toolBar = new JToolBar(); toolBar.setFloatable(false);
toolBar.setBorder(new BevelBorder(BevelBorder.RAISED));
JButton bookAddButton=new JButton(MenuActions.BOOK_ADD);
//ImageIcon icon=CreatecdIcon.add(\创建图标方法 ImageIcon icon=new
ImageIcon(Library.class.getResource(\));//添加菜单栏图标
bookAddButton.setIcon(icon);
bookAddButton.setHideActionText(true);
//bookAddButton.setToolTipText(\图片上提示字 toolBar.add(bookAddButton);
//toolBar.add(MenuActions.BOOK_MODIFY);
//在工具栏中添加图书修改与删除图标
JButton
JButton(MenuActions.BOOK_MODIFY); ImageIcon
bookModiAndDelButton=new
bookmodiicon=CreatecdIcon.add(\);//创建图标方法 bookModiAndDelButton.setIcon(bookmodiicon); bookModiAndDelButton.setHideActionText(true); toolBar.add(bookModiAndDelButton);
JButton bookTypeAddButton=new JButton(MenuActions.BOOKTYPE_ADD); ImageIcon
bookTypeAddicon=CreatecdIcon.add(\);//创建图标方法 bookTypeAddButton.setIcon(bookTypeAddicon); bookTypeAddButton.setHideActionText(true); toolBar.add(bookTypeAddButton);
JButton bookBorrowButton=new JButton(MenuActions.BORROW);
ImageIcon bookBorrowicon=CreatecdIcon.add(\);//创建图标方法
bookBorrowButton.setIcon(bookBorrowicon); bookBorrowButton.setHideActionText(true); toolBar.add(bookBorrowButton);
JButton bookOrderButton=new JButton(MenuActions.NEWBOOK_ORDER); ImageIcon bookOrdericon=CreatecdIcon.add(\);//创建图标方法
bookOrderButton.setIcon(bookOrdericon); bookOrderButton.setHideActionText(true); toolBar.add(bookOrderButton);
JButton bookCheckButton=new JButton(MenuActions.NEWBOOK_CHECK_ACCEPT);
ImageIcon bookCheckicon=CreatecdIcon.add(\);//创建图标方法
bookCheckButton.setIcon(bookCheckicon); bookCheckButton.setHideActionText(true); toolBar.add(bookCheckButton);
JButton readerAddButton=new JButton(MenuActions.READER_ADD);
ImageIcon readerAddicon=CreatecdIcon.add(\);//创
建图标方法
readerAddButton.setIcon(readerAddicon); readerAddButton.setHideActionText(true); toolBar.add(readerAddButton);
JButton readerModiAndDelButton=new JButton(MenuActions.READER_MODIFY); ImageIcon
readerModiAndDelicon=CreatecdIcon.add(\);//创建图标方法
readerModiAndDelButton.setIcon(readerModiAndDelicon); readerModiAndDelButton.setHideActionText(true); toolBar.add(readerModiAndDelButton);
JButton ExitButton=new JButton(MenuActions.EXIT);
}
ImageIcon Exiticon=CreatecdIcon.add(\);//创建图标方法 ExitButton.setIcon(Exiticon);
ExitButton.setHideActionText(true); toolBar.add(ExitButton); return toolBar;
4:最后在Library.java类中的主函数中调用登陆窗体,如果登入成功,初始化Library.java对象,如果登入失败,则弹出提示对话框,关键代码如下: Public static void main(String[] args){ Try {
UManager.setLookAndFeel (UIManager
.getSystemLookAndFeelClassName()); }catch (Exception ex) { ex.printStackTrace(); } }
登陆模块设计
登陆模块式图书馆管理系统的入口,在运行本系统后,首先进入的便是登陆窗体。在该窗体中,系统管理员可以通过输入正确的管理员名称与密码登陆到系统,当用户没有输入管理员的名称或密码时,系统将会弹出相应地提示信息。登陆模块的运行效果如图: