《Java大学教程》—第10章 图形和事件驱动程序
10.2 Swing程序包
AWT(Abstract Window Toolkit): 抽象窗口工具集。
依赖于本地操作系统的组件被称为重量级(Heavy Weight)组件,因为它们都会大量使用系统资源。
组件名称有Frame(框架)、Button(按钮)、Label(标签)等
Swing: 基于AWT类构建。
几乎所有的组件都用Java编写,而且所有代码都是Swing程序包的一部分。用Java语言编写的组件称为轻量级(Light Weight)组件。
组件名称都以J开头,如JFrame、JButton、JLabel等。
Swing程序包和AWT程序包都是Java基础类(Java Foundation Class, JFC)中的一部分。
补充说明:首先轻量级与重量级是一个相对的概念,主要是对应用框架使用方便性和所提供服务特性等方面做比较的。
轻量级组件都是纯Java代码开发的,具有良好的平台移植性,不依赖于操作系统的支持,在所有的平台上表现一样,不直接使用操作系统的资源,
当然操作系统的资源依然是要占用的,只是系统资源的管理都由组件完成,使用组件的程序员不直接与操作系统的资源打交道。
重量级组件则每个类都会与操作系统中的一个对等资源相对应。
10.4 Java中的事件处理机制(event-handling)
事件处理器(event-handler)
自测题:
1。轻量级组件与重量级组件的不同。
依赖于本地操作系统的组件被称为重量级组件,因为它们都会大量使用系统资源。
全部使用Java语言编写的组件称为轻量级组件,它们透过AWT使用系统资源,不会直接管理系统资源。
2。布局管理器的作用
3。FlowLayout管理器与BorderLayout管理器的不同
4。
a) JFrame组件的布局策略
b) JPanel组件的布局策略
5。一个名为SomeClass的类具有两个按钮组件,这两个按钮组件被按下时将会采取特定的动作。
a) 必要的import语句。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
b) 正确的头部语句。
public class SomeClass extends JFrame implements ActionListener
c) 创建按钮需要的Swing组件。
JButton
d) 对按钮监听鼠标单击事件。
button1.addActionListener(this);
e) 哪个方法可以决定鼠标单击按钮时采取行动。
public void actionPerformed(ActionEvent e)
注: 实现可以参看PushMe.java
编程练习:代码附件
1. PushMe.java RunPushMe.java
2. ChangingFacesGUI.java
这个我用的是Swing Designer完成的界面设计+手工修改了部分代码,
优点:比原始版本简洁
缺点:使用了anoynomous class,本书到这里还没有讲解;还用了enum类型,也是要到书的后面才讲,这样做就是为了更好的对比学习
3. MetricConverterGUI.java
实现了摄氏温度与华氏温度的转换
最后加了两个Panel是为了对齐前面的Panel
4. ReactorTesterGUI.java
也是采用Swing Designer完成的界面设计,还增加了MessageBox的使用。
补充1:MessageBox需要一个父组件,而ReactorTesterGUI并没有在构造函数中实例化,所以不能使用。
而能使用的是contentPane,这个是在构造函数中实例化了,并且在使用之前已经声明了。
父组件是为也确定MessageBox显示的位置,结果是MessageBox会显示在父组件的中间位置。
补充2:因为ReactorTesterGUI在构造函数中是无法实例化的,所以生成的组件并没有直接放在frame的panel中,而是放在contentPane中。
contentPane是在ReactorTesterGUI的类中声明了,再在构造函数中用setContentPane(contentPane)来替换JFrame自己的rootPane。
《Java大学教程》—第10章 图形和事件驱动程序的更多相关文章
- 正在学习的Java大学教程
推荐本书<Java大学教程> 看的人比较少,我也是多年不看书了,基于教程一般选国外的方法,从图书馆选了本书. 看了一半,感觉书的内容比较认真,对于基本的Java知识都算介绍全了,而且全书是 ...
- 《Java大学教程》—第18章 高级图形编程
自测题:1. 在图形应用程序中为用户提供选择的多种方式:P433下拉菜单(pull-down menu).弹出式菜单(pop-up menu).对话框窗口(dialogue window).单选 ...
- 《Java大学教程》—第24章 Java的背景
本章主要介绍的是Java的背景知识,通过了解历史知道Java与其他语言的区别,以便更好选择在什么场景下使用Java. 24.2 语言的尺寸Java语言短小.紧凑,以C++为基础,放弃了一些特定的 ...
- 《Java大学教程》—第23章 Java网络编程
本章主要关注的是Java的几个应用网络编程的场景,对于网络编程没有太多深入介绍,而Java本来也没有多少针对网络编程的特性.虽然Java有个Applet的概念,但是真用这个的开发的场景其实不多. 23 ...
- 《Java大学教程》—第22章 多线程程序
22.2 进程(process):P551时间切片(time-slicing):处理器只是完成了一个任务的一部分工作,然后完成下一个任务的一部分工作,因为处理吕每次完成工作的时间都非常短,因此看起来这 ...
- 《Java大学教程》—第19章 改进用户界面
用户与程序交互的媒介称为用户界面(user interface)或人机界面(human-computer interface). 19.2 Border接口8个实现Border接口的标准边框类: ...
- 《Java大学教程》—第14章 抽象、继承和接口
自测题:1. 解释抽象和抽象数据类型的概念.P333抽象的概念是仅仅关注对象可以完成什么工作,而不必担心如何完成工作的细节.类模板通常被称为抽象数据类型.因为这类数据暴露给用户的所有信息仅仅是方 ...
- 《Java大学教程》—第12章 案例研究--第2部分
本章就是上一章的延续,主要是用GUI实现了控制界面. 编程练习:代码附件Hostel.java1. 正确运行2. Runhostel.java3. searchButton
- 《Java大学教程》—第11章 案例研究--第1部分
自测题:1. 图11-1的UML设计中各个类之间的关系.Hostel与TenantList是关联关系:TenantList和PaymentList与ObjectList是泛化关系.TenantL ...
随机推荐
- .net 后台判断是否要替换
Response.Write("<script>window.onload=function (){if(confirm(\"该文件已经存在,确定要替换吗吗?\&quo ...
- .NET MVC后台发送post请求
一.WebRequest方式 //设置请求接口 var request = (HttpWebRequest)WebRequest.Create("http://xxx.com/xxx&quo ...
- [android] logcat简介
/****************2016年5月4日 更新**************************/ 知乎:Android中的LogCat为什么叫作LogCat? 刘贺: linux有个命 ...
- 慕课网maven多环境配置
profile 下面的节点,是把profile 标签内容复制几份,并且需要把<activation> 去掉.在idea右侧 maven button 中会出现选择 节点. 接着打包命令和打 ...
- SpringBoot史前简述
背景 大约20年前,程序员们使用“企业级Java Bean”(EJB)开发企业应用,需要配置复杂的XML. 在二十世纪初期,新兴Java技术——Spring,横空出世.使用极简XML和POJO(普通J ...
- python进程间通信
Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信. 1. Queue的使用 可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个 ...
- 【LInux】查看Linux系统版本信息
一.查看Linux内核版本命令(两种方法): 1.cat /proc/version [root@S-CentOS home]# cat /proc/versionLinux version 2.6. ...
- 推荐好用的JavaScript模块
译者按: 作者将自己常用的JavaScript模块分享给大家. 原文:
- HTML5为输入框添加语音输入功能
这里介绍的是大家以后要用到的html强大功能,可直接给输入框增加语音功能,下面我们先来看看实现方法. 大家可以看到在输入框右边的麦克风图标,点击麦克风就能够进行语音识别了. 其实很简单,语音识别是ht ...
- 洛谷P4302 [SCOI2003]字符串折叠(区间dp)
题意 题目链接 Sol 裸的区间dp. 转移的时候枚举一下断点.然后判断一下区间内的字符串是否循环即可 `cpp #include<bits/stdc++.h> #define Pair ...