繼續上一節的項目,本節将實作主界面,按照下圖建立類檔案:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbwxCdh1mcvZ2LcV2Zh1Wa9M3clN2byBXLzN3btg3P3hTeklnSspldSVlTFFzaXxkRVRWasd1TUZFbZBnWEdFNZpXWQpFWVJjTXF2RSdUT5VVRTNlWFNmc5UFZrB3MatUOwEWSSBDV3FFWiVTVXdFeCpmWS5keWVTUURVN4dlW0QWVVJkTIdVM00WWwFzVjxWMXRVYWhVWDZ0VhZ3YtJ2d5wWZwp0ViRXOpJma1knYulzRihXNpVGcKdlY0lTeMZTTINGMShUYvwlbj5yZtlmbkN3YuQnclZnbvN2Ztl2Lc9CX6MHc0RHaiojIsJye.jpg)
其中各個類檔案的内容如下:
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】可擷取本節的源碼。