天天看點

Java實戰之圖書管理系統(swing版)(4)——主界面及功能實作

繼續上一節的項目,本節将實作主界面,按照下圖建立類檔案:

Java實戰之圖書管理系統(swing版)(4)——主界面及功能實作

其中各個類檔案的内容如下:

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);
        }
    }
}
           

雖然這裡完成了代碼,但是登入成功還是不會出現主界面的,因為在第一節中的登入裡面是把這一行代碼給注釋了的,

Java實戰之圖書管理系統(swing版)(4)——主界面及功能實作

要做的即是取消改行注釋,即代碼如下:

// 當登入成功後,跳轉到主界面
new MainFrame().setVisible(true);
           

點選程式進行運作,登入成功後結果如下:

Java實戰之圖書管理系統(swing版)(4)——主界面及功能實作

其中頂部的菜單項是可以點選的

Java實戰之圖書管理系統(swing版)(4)——主界面及功能實作

點選後主界面會變成如下,因為還沒有為這些面闆添加控件,就隻有一片空白。

Java實戰之圖書管理系統(swing版)(4)——主界面及功能實作

可搜尋微信公衆号【Java執行個體程式】或者掃描下方二維碼關注公衆号擷取更多。

注意:在公衆号背景回複【20200130】可擷取本節的源碼。

Java實戰之圖書管理系統(swing版)(4)——主界面及功能實作