1.
- package mybook.book;
- import java.awt.*;
- import javax.swing.*;
- import java.awt.Rectangle;
- import javax.swing.BorderFactory;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.util.Calendar;
- import mydbc.dbc.DBC;
- import java.net.URL;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- // 该类为本程序主界面
- public class FrMain extends JFrame {
- private static final long serialVersionUID = 1L;
- //注意图片必须要和this class 在同一个目录下面。否则会找不到该图片。
- URL url1=this.getClass().getResource("bookStore.jpg");
- Image imagenewBook=Toolkit.getDefaultToolkit().createImage(url1);
- ImageIcon newBook = new ImageIcon(imagenewBook);
- public FrMain() {
- try {
- jbInit();
- } catch (Exception exception) {
- exception.printStackTrace();
- }
- }
- private void jbInit() throws Exception {
- getContentPane().setLayout(null);
- this.setJMenuBar(jMenuBar1);
- setSize(new Dimension(700, 600));
- this.setTitle("福娃图书管理系统");
- menuSysManage.setText("【系统管理】");
- miExit.setText("退出");
- miExit.addActionListener(new FrMain_miExit_actionAdapter(this));
- btnAbout.setBounds(new Rectangle(314, 3, 75, 70));
- btnAbout.setIcon(aboutIcon);
- //交给FrMain_btnAbout_actionAdapter出处理相应的事件
- btnAbout.addActionListener(new FrMain_btnAbout_actionAdapter(this));
- }
- public void miExit_actionPerformed(ActionEvent e) {
- System.exit(0);
- }
- public void btnAbout_actionPerformed(ActionEvent e) {
- FrAbout about = new FrAbout();
- //调用另一个窗体也就是另一个view
- //NewFram负责判断窗体大小是否越界
- NewFram(about);
- }
- }
2.
- //退出的事件监听class
- class FrMain_miExit_actionAdapter implements ActionListener {
- private FrMain adaptee;
- FrMain_miExit_actionAdapter(FrMain adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.miExit_actionPerformed(e);
- }
- }
3.
- //调用关于窗体的事件监听class
- class FrMain_btnAbout_actionAdapter implements ActionListener {
- private FrMain adaptee;
- FrMain_btnAbout_actionAdapter(FrMain adaptee) {
- this.adaptee = adaptee;
- }
- public void actionPerformed(ActionEvent e) {
- adaptee.btnAbout_actionPerformed(e);
- }
- }
这样做的好处
1.防止了在Frmain中的一个actionPerformed方法处理大量不同组件的动作。使Frmain中的代码很少,容易读懂。
2.这样通过事件监听class的回调方法,可以很容易的使用FrMain中的组件并对之中的组件进行修改状态。
3.最重要的是很容易读懂程序,后期很容易维护。
注意:
程序代码不完整,但是结构原理很清晰。(不要盲目copy)