继续上一节的项目,本节将实现主界面,按照下图创建类文件:
其中各个类文件的内容如下:
AboutSoftDialog.java
package bookManageSystem.view;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class AboutSoftDialog extends JDialog implements ActionListener, MouseListener {
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
}
BookAddPanel.java
package bookManageSystem.view;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class BookAddPanel extends JPanel implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
}
}
BookManagePanel.java
package bookManageSystem.view;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class BookManagePanel extends JPanel implements ActionListener, ListSelectionListener {
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void valueChanged(ListSelectionEvent e) {
}
}
BookTypeAddPanel.java
package bookManageSystem.view;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class BookTypeAddPanel extends JPanel implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
}
}
BookTypeManagePanel.java
package bookManageSystem.view;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class BookTypeManagePanel extends JPanel implements ActionListener, ListSelectionListener {
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void valueChanged(ListSelectionEvent e) {
}
}
上面除了Main.java和LogupFrame.java这是第一节就写了的代码,不需要进行增删现阶段。
然后就是MainFrame.java,该类是主界面类,其中代码如下:
package bookManageSystem.view;
import bookManageSystem.tools.ComponentTools;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MainFrame extends JFrame implements ActionListener {
private ComponentTools componentTools = new ComponentTools();
private JMenuBar menuBar;
private JMenu bookTypeManageMenu, bookManageMenu, otherMenu;
private JMenuItem bookTypeAddMenuItem, bookTypeManageMenuItem, bookAddMenuItem, bookManageMenuItem, exitMenuItem,
aboutSoftMenuItem;
MainFrame() {
this.setTitle("惰惰龟图书管理系统");
this.setBounds(400, 400, 800, 700);
// 为主界面添加菜单条
this.setJMenuBar(this.createMenuBar());
// 设置主界面的内容面板
this.setContentPane(createMainPanel());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置默认不显示
this.setVisible(false);
// 为菜单条中的菜单项注册事件
bookTypeAddMenuItem.addActionListener(this);
bookTypeManageMenuItem.addActionListener(this);
bookAddMenuItem.addActionListener(this);
bookManageMenuItem.addActionListener(this);
exitMenuItem.addActionListener(this);
aboutSoftMenuItem.addActionListener(this);
}
/**
* 为主界面创建一个菜单条
*
* @return 返回菜单条
*/
private JMenuBar createMenuBar() {
// 实例化一个菜单条对象
menuBar = new JMenuBar();
// 【图书类别管理】菜单
bookTypeManageMenu = new JMenu("图书类别管理");
bookTypeAddMenuItem = new JMenuItem("图书类别添加");
bookTypeManageMenuItem = new JMenuItem("图书类别维护");
bookTypeManageMenu.add(bookTypeAddMenuItem);
bookTypeManageMenu.add(bookTypeManageMenuItem);
menuBar.add(bookTypeManageMenu);
// 【图书管理】菜单
bookManageMenu = new JMenu("图书管理");
bookAddMenuItem = new JMenuItem("图书添加");
bookManageMenuItem = new JMenuItem("图书维护");
bookManageMenu.add(bookAddMenuItem);
bookManageMenu.add(bookManageMenuItem);
menuBar.add(bookManageMenu);
// 【其他】菜单
otherMenu = new JMenu("其他");
exitMenuItem = new JMenuItem("退出");
aboutSoftMenuItem = new JMenuItem("关于软件");
otherMenu.add(exitMenuItem);
otherMenu.add(aboutSoftMenuItem);
menuBar.add(otherMenu);
// 批量为菜单项设置图标
componentTools.setIcons(
new JMenuItem[]{bookTypeAddMenuItem, bookTypeManageMenuItem, bookAddMenuItem, bookManageMenuItem, exitMenuItem, aboutSoftMenuItem},
new String[]{"src/bookManageSystem/images/add.png", "src/bookManageSystem/images/edit.png", "src" +
"/bookManageSystem/images/add.png", "src/bookManageSystem/images/edit.png", "src" +
"/bookManageSystem/images/exit.png", "src/bookManageSystem/images/about.png"}
);
return menuBar;
}
/**
* 为主界面创建内容面板
*
* @return 返回一个面板
*/
private JPanel createMainPanel() {
// 实例化一个面板
JPanel panel = new JPanel();
// 设置面板中的布局方式
panel.setLayout(new BorderLayout());
JLabel label = new JLabel();
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setVerticalAlignment(SwingConstants.CENTER);
ImageIcon ii = new ComponentTools().iconSize(new ImageIcon("src/bookManageSystem/images/bookmanagesystem.png"), 600, 400);
// 设置一个图片标签
label.setIcon(ii);
// 将标签添加到面板中
panel.add(label);
return panel;
}
@Override
public void actionPerformed(ActionEvent e) {
// “图书类别添加”菜单项事件处理
if (e.getSource() == bookTypeAddMenuItem) {
// 将主界面的内容面板替换成图书类别添加面板
this.setContentPane(new BookTypeAddPanel());
// 并设置该面板显示
this.setVisible(true);
}
// “图书类别维护”菜单项事件处理
if (e.getSource() == bookTypeManageMenuItem) {
// 将主界面的内容面板替换成图书类别维护面板
this.setContentPane(new BookTypeManagePanel());
// 并设置该面板显示
this.setVisible(true);
}
// “图书添加”菜单项事件处理
if (e.getSource() == bookAddMenuItem) {
// 将主界面的内容面板替换成图书添加面板
this.setContentPane(new BookAddPanel());
// 并设置该面板显示
this.setVisible(true);
}
// “图书维护”菜单项事件处理
if (e.getSource() == bookManageMenuItem) {
// 将主界面的内容面板替换成图书维护面板
this.setContentPane(new BookManagePanel());
// 并设置该面板显示
this.setVisible(true);
}
// “退出”菜单项事件处理
if (e.getSource() == exitMenuItem) {
// 结束整个程序
System.exit(0);
}
// “关于软件”菜单项事件处理
if (e.getSource() == aboutSoftMenuItem) {
// 设置关于软件提示框显示
new AboutSoftDialog().setVisible(true);
}
}
}
虽然这里完成了代码,但是登录成功还是不会出现主界面的,因为在第一节中的登录里面是把这一行代码给注释了的,
要做的即是取消改行注释,即代码如下:
// 当登录成功后,跳转到主界面
new MainFrame().setVisible(true);
点击程序进行运行,登录成功后结果如下:
其中顶部的菜单项是可以点击的
点击后主界面会变成如下,因为还没有为这些面板添加控件,就只有一片空白。
可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。
注意:在公众号后台回复【20200130】可获取本节的源码。