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()+"\n");
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接口:

core java 8~9(GUI & AWT事件处理机制)的更多相关文章

  1. Java基础学习 -- GUI之 事件处理基础

    事件处理可以简单地这么理解,当有一个事件产生,程序要根据这个事件做出响应.比如,我们做了一个可以通过按钮改变背景颜色的窗口,当我们点击按钮时便产生了一个事件,程序会根据这个事件来做出响应,也就是去改变 ...

  2. 编写Java程序,使用Swing事件处理机制实现用户登录和英雄信息显示

    返回本章节 返回作业目录 需求说明: 使用Swing事件处理机制实现用户登录和英雄信息显示 实现思路: 创建LoginView类,该类用于显示登录界面,为登录按钮添加ActionListener事件, ...

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

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

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

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

  5. java 事件处理机制:按下上下左右键控制小球的运动

    /** * 加深对事件处理机制的理解 * 通过上下左右键来控制一个小球的位置 */package com.test3;import java.awt.*;import javax.swing.*;im ...

  6. Java Swing事件处理机制

    Java Swing的事件处理机制 Swing GUI启动后,Java虚拟机就启动三个线程,分别为主线程,事件派发线程(也是事件处理线程)和系统工具包线程. 主线程 :负责创建并显示该程序的初始界面: ...

  7. java GUI之事件处理

    常见事件及相应事件源类型 事件源 用户操作 事件 JButton 点击按钮 ActionEvent JTextField 在文本域按回车键 ActionEvent JCheckBox 点击复选框 Ac ...

  8. 从零开始理解JAVA事件处理机制(3)

    我们连续写了两小节的教师-学生的例子,必然觉得无聊死了,这样的例子我们就是玩上100遍,还是不知道该怎么写真实的代码.那从本节开始,我们开始往真实代码上面去靠拢. 事件最容易理解的例子是鼠标事件:我们 ...

  9. JAVA委托事件处理机制

    1)事件:用户对程序的某一种功能性操作. Java中的事件主要有两种: 1.组件类事件 componentEvent.ContainerEvent.WindowEvent.FocusEvent.Pai ...

随机推荐

  1. HTTP 500.22 错误解决

    打开网站对应的应用池-->高级设置-->托管管道模式改为classic

  2. Web 站点的水平扩展和垂直扩展 (译文)

    当一个开发人员提升计算机系统负荷时,通常会考虑两种方式垂直扩展和水平扩展.选 用哪种策略主要依赖于要解决的问题以及系统资源的限制.在这篇文章中我们将讲述这两种策略并讨论每种策越的优缺点.如果你已经有一 ...

  3. mysql中explain看性能

    select distinct col_name from table where a=X and b=Y and date(time)='xx-xx-xx';执行时间 27.9772 秒 expla ...

  4. ionic goto other page or alert

    有时候需要 调试,这是就需要alert 的...可惜的是我不会angular  所以记录一下 .controller('mainctr', function($scope, $window) { $w ...

  5. 【MySQL】查询使用临时表

    MySQL查询产生临时表的分析 官网说明的地址:http://dev.mysql.com/doc/refman/5.5/en/internal-temporary-tables.html 参考:htt ...

  6. 10 Code Coverage Tools for C & C++

    Code coverage is a measure used in software testing that describes the degree to which the source co ...

  7. hdu1203

    #include <stdio.h> #include <math.h> #define mmin(x,y) (x)<(y)?(x):(y) int main(){ +] ...

  8. Linux日志

    一.Linux 常見的日志文件 /var/log/cron:你的 crontab 排程有没有实际被进行? 进行过程有没有发生错误?你的 /etc/crontab 是否撰写正确?在这个登录档内查询看看. ...

  9. Highcharts 连续的堆积面积图

    说明:设置两个柱形图间距为0 Highcharts柱图,设置X轴各Column的间距 plotOption : {    column : {        // 设置每个柱自身的宽度        ...

  10. Mysql迁移工具在生产环境下的使用

    在产品迭代开发发布过程中,由于业务需求的增加,数据库难免会有结构调整等操作. 在每个版本发布过程中怎么控制每个版本server端程序与数据库版本保持一致,以及数 据库升级.回滚等操作. 本博文宅鸟将向 ...