《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 ...
随机推荐
- 使用Task异步执行方法_多线程_应用程序池
偶然遇到在执行登录的方法需要发送消息队列导致登录时间过长的问题,从网上查了一些方法,先将一个简单的异步处理程序的小例子展示出来,供大家参考: 备注:该方法是从应用程序程序所在的线程池中获取线程,第一次 ...
- 【转载】ASP.NET MVC设置允许跨域访问
默认情况下,浏览器端发送Ajax请求一般被禁止跨域访问,如A域名网站访问B域名网站的请求会被终止,在ASP.NET MVC项目中,我们可以配置相应的设置项,允许网站的接口跨域访问,主要需要设置Acce ...
- javaScript遍历对象、数组总结(转载)
javaScript遍历对象.数组总结 转载来源 https://www.cnblogs.com/chenyablog/p/6477866.html 在日常工作过程中,我们对于javaScript遍 ...
- [nodejs] nodejs开发个人博客(六)数据分页
控制器路由定义 首页路由:http://localhost:8888/ 首页分页路由:http://localhost:8888/index/2 /** * 首页控制器 */ var router=e ...
- Java中的匿名内部类及内部类的二三事
匿名内部类适合创建那些只需要使用一次的类,它的语法有些奇怪,创建匿名内部类会立即创建一个该类的实例,这个类定义立即消失,且不能重复使用. 定义匿名类的格式如下: new 实现接口() |父类构造器(实 ...
- 使用Retrofit2+RxJava2+ProtoBuf实现网络请求
引言 Retrofit 是一个用于 Android 和 Java 平台的类型安全的,底层使用OkHttp实现网络请求框架.Retrofit 通过将 API 抽象成 Java 接口而让我们连接到 RES ...
- hash 和pushState,replaceState
hash 要点: 1.不会向后台发请求:#是用来指导浏览器动作的,对服务器端完全无用. 2.用来跳转到页面的指定位置: 为网页位置指定标识符,有两个方法.一是使用锚点,比如<a name=& ...
- RequireJS模块化编程详解
1.模块的写法 模块化编程一般都有这么几个过渡过程,如下描述. 原始方法 function m1(){ //... } function m2(){ //... } 上面的函数m1()和m2(),组成 ...
- cf1136E. Nastya Hasn't Written a Legend(二分 线段树)
题意 题目链接 Sol yy出了一个暴躁线段树的做法. 因为题目保证了 \(a_i + k_i <= a_{i+1}\) 那么我们每次修改时只需要考虑取max就行了. 显然从一个位置开始能影响到 ...
- MachineLN博客目录
MachineLN博客目录 https://blog.csdn.net/u014365862/article/details/78422372 本文为博主原创文章,未经博主允许不得转载.有问题可以加微 ...