zoukankan      html  css  js  c++  java
  • core java 8~9(GUI & AWT事件处理机制)

    MODULE 8 GUIs
    --------------------------------
    GUI中的包:
    java.awt.*;
    javax.swing.*;
    java.awt.event.*;


    要求:
    1)了解GUI的开发流程;
    2)掌握常用的布局管理器

    开发GUI图形界面的步骤
    -------------------------------
    1.选择容器
    1)Frame容器
    有缩小/最大化/关闭等按钮,顶层容器
    2)Dialog对话框
    通常依赖于容器,不单独出现
    3)Applet 依赖于浏览器的支持,已淘汰
    4)Panel 轻量级小容器
    没有缩小/最大化/关闭等按钮,通常一个大的容器需要设置多种排列风格时,将大容器切割成多个小容器,每个小容器添加自己独有的风格。没有滚动条
    5)ScrollPane 带有滚动条的小容器

    2.给容器设置布局管理器
    布局管理器决定了容器组件的排列风格
    1)setLayout(布局管理器) 设置布局管理器
    2)可以通过组件的setLocation() setBounds()等方法设置组件在容器当中的位置,大小,以及和容器的边界等
    3)所有容器都有默认的布局管理器
    Window 默认为BorderLayout,Frame容器与之相同
    Panel 默认为FlowLayout

    3.往容器中添加组件
    1)创建组件对象
    Button b=new Button("Add");
    2)向容器中添加组件
    add(b);

    4.创建事件监听器
    给每个组件添加相应的时间处理代码
    westBtn.addActionListener(new ActionListener(){
    public void Performed(ActionEvent e){
    centerArea.setText(centerArea.getText()+westTxt.getText()+" ");
    westTxt.setText("");
    }
    });


    创建容器的两种方式
    1)将JFrame作为成员变量
    2)可以继承JFrame


    常见的布局管理器
    ------------------------
    1.flowlayout 流式布局管理
    组件按行排列,一行排不下或窗口改变会自动换行排列

    2.BorderLayout
    将容器分为五大区域:
    BorderLayout.CENTER
    BorderLayout.EAST
    BorderLayout.WEST
    BorderLayout.SOUTH
    BorderLayout.NORTH
    每个区域只能放一个组件,且该组件充满整个区域
    若改变窗口大小,只有CENTER区域会跟随改变,其他区域不变

    练习:BorderLayoutEx.java


    3.GridLayout 网格布局管理器
    将容器划分为若干行若干列大小相同的网格,每个网格只允许放一个组件,且该组件充满网格
    对组件调整大小无意义

    4.CardLayout 卡片状布局管理器
    设置多个卡片,每个卡片只能放一个组件,且该组件充满整个区域

    JFC
    提供了通用的类库开发图形界面,操作系统无关

    组成:AWT Java2D Accessebility Drag and Drop, Swing


    MODULE 9 AWT事件处理机制
    --------------------------------
    按钮 点击 产生响应
    事件源(触发)点击事件(给)事件监听器===> 执行响应代码

    三要素:
    Event Source:事件源
    操作的组件,如按钮等,会产生事件
    Event Object:事件对象
    组件身上触发的事件对象,如鼠标单击,将动作包装成对象
    Event Listener:事件监听器
    负责对不同事件源发来的事件进行响应

    例:


    分析:
    1)事件源要维护一个监听器列表,产生的事件传递个这些监听器
    2)事件对象身上要携带有事件源的信息
    3)事件监听器要知道事件源,并根据不同的事件源做不同的响应


    情绪模型
    ----------------
    女孩 产生 情绪事件 发送给 男孩子们

    Girl 事件源
    1)负责产生情绪事件happy()/sad(),把情绪传递给所有对她感兴趣的男孩子
    2)要维护一个男孩子列表,记录所有对她感兴趣的男孩
    3)提供相应的方法允许注册监听器或删除监听器

    EmotionEvent 事件对象
    情绪事件要携带有Girl的信息

    Boy 监听器
    对不同的Girl发来的情绪事件作出不同的反应

    适配器Adapter
    -----------------------------------
    设计原因:
    采用实现事件监听器接口的 方式编写事件处理代码时 ,必须对该接口中的所有事件提出实现(很多事件不会用到)。考虑简化该方式:适配器类


    原有的:MouseListener接口:


    你要坚强,坚强的足以认识自己的弱点;你要勇敢,勇敢的足以面对自己的恐惧;你要堂堂正正。在遇到挫折时能够昂首而不背躬屈膝;你要能够面对掌声,在胜利时能够谦逊而不趾高气扬。真正的伟大直率真诚,真正的贤人虚怀若谷,真正的强者温文尔雅。——萨利·布什(林肯的继母教育林肯)
  • 相关阅读:
    浅谈if __name__='__main__'
    python打开文件方式
    关于ValueError: not enough values to unpack (expected 4, got 1)
    一篇文章让你搞懂this
    Cannot read property 'addEventListener' of null报错的解决办法
    看JS操作符中二进制补码
    js的原型和原型链理解
    你不知道的js中对象,数组互相转换
    浅谈js中a+++a与a+a++值区别
    Integer跟int的区别
  • 原文地址:https://www.cnblogs.com/jinhuazhe2013/p/4148006.html
Copyright © 2011-2022 走看看