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