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