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 Demo1_Frame {
 /**
  * @param args
  */
 public static void main(String[] args) {
  Frame f = new Frame("我的第一个窗口");
  f.setSize(400, 600);       //设置窗体大小
  f.setLocation(500, 50);       //设置窗体位置
  f.setIconImage(Toolkit.getDefaultToolkit().createImage("qq.png"));
  Button b1 = new Button("按钮一");
  Button b2 = new Button("按钮二");
  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 mouseClicked(MouseEvent e) { //单击
    System.exit(0);
   }*/
   @Override
   public void mouseReleased(MouseEvent e) { //释放
    System.exit(0);
   }
  });
  
  b1.addKeyListener(new KeyAdapter() {
   @Override
   public void keyReleased(KeyEvent e) {
    //System.exit(0);
    //System.out.println(e.getKeyCode());
    //if(e.getKeyCode() == 32) {
    if(e.getKeyCode() == KeyEvent.VK_SPACE){
     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);
 }
}*/
 

GUI-适配器设计模式-事件处理的更多相关文章

  1. Java适配器设计模式

    适配器设计模式,一个接口首先被一个抽象类先实现(此抽象类通常称为适配器类),并在此抽象类中实现若干方法(但是这个抽象类中的方法体是空的),则以后的子类直接继承此抽象类,就可以有选择地覆写所需要的方法. ...

  2. [gkk]传智-适配器设计模式,如同电源适配器

    //适配器设计模式 是图形化设计中用的.如同电源适配器 import java.awt.*; inport java.awte public calss MyFrame{ public static ...

  3. JAVA基础—适配器设计模式

    适配器概念 在计算机编程中,适配器模式将一个类的接口适配成用户所期待的.使用适配器,可以使接口不兼容而无法在一起工作的类协调工作,做法是将类自己包裹在一个已经存在的类中. JDK对适配器设计模式的应用 ...

  4. Java设计模式之适配器设计模式(项目升级案例)

    今天是我学习到Java设计模式中的第三个设计模式了,但是天气又开始变得狂热起来,对于我这个凉爽惯了的青藏人来说,又是非常闹心的一件事儿,好了不管怎么样,目标还是目标(争取把23种Java设计模式接触一 ...

  5. IOS设计模式第六篇之适配器设计模式

    版权声明:原创作品,谢绝转载!否则将追究法律责任. 那么怎么使用适配器设计模式呢? 这个之前提到的水平滚动的视图像这样: 为了开始实现他,我们创建一个新的继承与UIView的HorizontalScr ...

  6. 适配器设计模式初探(Java实现)

    本篇随笔主要介绍Java实现设配器设计模式. 先来看下待解决的问题: (图片转自http://blog.csdn.net/jason0539) 由上图的情况可知,欧洲壁式插座只有三足插口,如果我们想要 ...

  7. Design Pattern Adaptor 适配器设计模式

    适配器设计模式是为了要使用一个旧的接口,或许这个接口非常难用,或许是和新的更新的接口不兼容,所以须要设计一个适配器类,然后就能够让新旧的接口都统一. 就是这种一个图: watermark/2/text ...

  8. Java程序设计11——GUI设计与事件处理B

    4 Java事件模型的流程 为了使图形界面能够接收用户的操作,必须给各个组件加上事件处理机制. 在事件处理的过程中,主要涉及3类对象: 1.Event Source(事件源):事件发生的场所,通常就是 ...

  9. Java程序设计11——GUI设计与事件处理A

    1.GUI设计 Java使用AWT和Swing类完成图形用户界面编程,AWT全称是Abstract Window Toolkit,即抽象窗口工具集,它是Sun最早提供的GUI库,只是这个库功能比较有限 ...

随机推荐

  1. linux作业--第十一周

    1. 导入hellodb.sql生成数据库 (1) 在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄 (2) 以ClassID为分组依据,显示每组的平均年龄 (3) 显示第2题中 ...

  2. laravel7 路由引入,避免上线路由不统一

    1:新建 目录admin,新建文件夹route.php 2:将需要的路由写在route.php中即可. 3:在web.php  引入即可 include base_path('routes/admin ...

  3. Swagger整合Jwt授权配置

    Swagger整合Jwt授权配置 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章http://www.javaman.cn/sb2/swagger-jwt 一.Swagger入门 ...

  4. Windows 10平台安装PostgreSQL 14.2详细教程

    Windows 10平台安装postgreSQL 14.2.1,安装步骤很简单,基本上是点击下一步(next). 使用SQL Shell(psql)进行交互:使用pgAdmin工具进行管理. tips ...

  5. Net中事件的用法之二

    1.委托与事件的区别 事件对权限做了控制 1.委托可以直接调用 事件不可以直接调用 2.委托允许外面直接赋值 事件不允许外面直接赋值 2.事件与委托的实例比较 using System; using ...

  6. mybatis连接sql

    mysql6以上  com.mysql.cj.jdbc.Driver

  7. Asp.net Core Filter过滤器异常处理

    本文旨在: 1 继承ExceptionFilterAttribute,重写Override OnException(ExceptionContext context)处理异常 2 在.netCore中 ...

  8. 内置方法 __new__ __del__

    1.__new__ 构造方法 实例化对象是先执行__new__方法,但是类中没有__new__方法,所以先到父类object类中的new方法,开辟一个属于对象的空间,然后再执行init方法 设计模式: ...

  9. 加速度传感器(MPA1064A)实测---LOTO虚拟示波器

    加速度传感器(MPA1064A)实测---LOTO虚拟示波器 客户提供了一个加速度传感器,型号是MPA1064A,我们帮助客户测试下是否能测到传感器的输出,验证下测试方案.传感器很小巧,带了一根很长的 ...

  10. K8S原来如此简单(五)Metrics Server与HPA

    什么是HPA https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale/ 我们前面有通过kubectl ...