GUI窗體監聽---適配器模式

GUI(佈局管理器)
* FlowLayout(流式佈局管理器)
    * 從左到右的順序排列。
    * Panel默認的佈局管理器。
* BorderLayout(邊界佈局管理器)
    * 東,南,西,北,中
    * Frame默認的佈局管理器。
* GridLayout(網格佈局管理器)
    * 規則的矩陣
* CardLayout(卡片佈局管理器)
    * 選項卡
* GridBagLayout(網格包佈局管理器)
    * 非規則的矩陣
###25.15_GUI(窗體監聽)
   Frame f = new Frame("個人窗體");
    //事件源是窗體,把監聽器註冊到事件源上
    //事件對象傳遞給監聽器
    f.addWindowListener(new WindowAdapter() {
              public void windowClosing(WindowEvent e) {
                         //退出虛擬機,關閉窗口
            System.exit(0); } });

 

 

a.什麼是適配器
    * 在使用監聽器的時候, 須要定義一個類事件監聽器接口.
    * 一般接口中有多個方法, 而程序中不必定全部的都用到, 但又必須重寫, 這很繁瑣.
    * 適配器簡化了這些操做, 咱們定義監聽器時只要繼承適配器, 而後重寫須要的方法便可.
* b.適配器原理
    * 適配器就是一個類, 實現了監聽器接口, 全部抽象方法都重寫了, 可是方法全是空的.
    * 適配器類須要定義成抽象的,由於建立該類對象,調用空方法是沒有意義的
    * 目的就是爲了簡化程序員的操做, 定義監聽器時繼承適配器, 只重寫須要的方法就能夠了.

 

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class demon1_frame {
    /*
     * * FlowLayout(流式佈局管理器)
    * 從左到右的順序排列。
    * Panel默認的佈局管理器。
    * BorderLayout(邊界佈局管理器)
        * 東,南,西,北,中
        * Frame默認的佈局管理器。
    * GridLayout(網格佈局管理器)
        * 規則的矩陣
    * CardLayout(卡片佈局管理器)
        * 選項卡
    * GridBagLayout(網格包佈局管理器)
        * 非規則的矩陣
     */
    public static void main(String[] args) {
        Frame f = new Frame("個人第一個窗口");     //能夠給一個名字
        f.setSize(400,200);      //設置大小
        f.setLocation(300, 100); // 設置位置
        f.setIconImage(Toolkit.getDefaultToolkit().createImage("qq.png"));  //設置圖標
        Button b1 = new Button("按鈕1");
        Button b2 = new Button("阿按鈕2");
        f.add(b1);
        f.add(b2);
        f.setLayout(new FlowLayout());    //設置 佈局       
        //f.addWindowListener(new MyWindowAdapter());
        f.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
            
        });
        b1.addMouseListener(new MouseAdapter() {            
            @Override
            public void mouseReleased(MouseEvent e) {         //鼠標釋放        
                System.exit(0);
            }
            /*
            @Override
            public void mouseClicked(MouseEvent e) {    //單擊
                System.exit(0); 
            }*/                        
        });
        b1.addKeyListener(new KeyAdapter() {

            @Override
            public void keyPressed(KeyEvent e) {
                //System.out.println(e.getKeyCode());
                /*if (e.getKeyCode() == 32) {
                    System.exit(0);
                }*/
                if (e.getKeyCode() == KeyEvent.VK_SPACE) {
                    System.exit(0);
                }
                // System.exit(0);
            }
            
        });
        
        b2.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {  // 默認對的是空格鍵和鼠標左鍵
                System.exit(0);
            }
            
        });
        f.setVisible(true);   // 設置窗口課件
    }

}

/*class MyWindowListener implements WindowListener{

    @Override
    public void windowOpened(WindowEvent e) {
    }

    @Override
    public void windowClosing(WindowEvent e) {
         System.exit(0);
    }

    @Override
    public void windowClosed(WindowEvent e) {
        System.out.println("窗口關閉closed");
    }

    @Override
    public void windowIconified(WindowEvent e) {
    }

    @Override
    public void windowDeiconified(WindowEvent e) {
    }

    @Override
    public void windowActivated(WindowEvent e) {
    }

    @Override
    public void windowDeactivated(WindowEvent e) {
    }
    
}*/

class MyWindowAdapter extends WindowAdapter{

    @Override
    public void windowClosing(WindowEvent e) {
        
        System.exit(0);
    }
    
}
相關文章
相關標籤/搜索