Swing支持下的GUI编程

上传人:油条 文档编号:47552603 上传时间:2018-07-02 格式:PPT 页数:129 大小:2.84MB
返回 下载 相关 举报
Swing支持下的GUI编程_第1页
第1页 / 共129页
Swing支持下的GUI编程_第2页
第2页 / 共129页
Swing支持下的GUI编程_第3页
第3页 / 共129页
Swing支持下的GUI编程_第4页
第4页 / 共129页
Swing支持下的GUI编程_第5页
第5页 / 共129页
点击查看更多>>
资源描述

《Swing支持下的GUI编程》由会员分享,可在线阅读,更多相关《Swing支持下的GUI编程(129页珍藏版)》请在金锄头文库上搜索。

1、第九章 Swing支持下的GUI编程 立体化教材计算机系列 Java程序设计 2目目 录录 重点与难点点拨重点与难点点拨SwingSwingSwingSwing的对话框设计的对话框设计 SwingSwing的菜单系统与工具栏的菜单系统与工具栏SwingSwing的高级组件的高级组件经典练习题经典练习题SwingSwing基本组件基本组件SwingSwing编程基础编程基础 立体化教材计算机系列 Java程序设计 3本章知识重点3132Swing的容器类 33Swing的高级组件类 34对话框类各容器及组件的事件响应35Swing的基本组件类 立体化教材计算机系列 Java程序设计 4本章知识难

2、点33各高级组件的使用及事件响应343132各容器类使用及对应的事件各基本组件的使用及对应的事件swing与AWT控件的异同立体化教材计算机系列 Java程序设计 5Swing Swing概述 在最新的Java2中, javax.swing包被列入Java的基础类 库(JFC),其中定义的Swing GUI组件相对于java.awt包的 各种GUI组件增加了许多功能。作为第二代GUI开发工具集的Swing与第一代开发工具集 AWT具有以下区别:立体化教材计算机系列 Java程序设计 6Swing组件完全由纯Java语言实现,没有本地代码,不依赖于 具体平台的支持,功能更强大,具有更好的平台无关

3、性,这 种独立于本地平台的Swing组件被称为轻量级(Light Weight) 组件。而AWT组件通过依赖于具体平台的本地对等组件类来实 现,这些组件在它们自己的本地不透明窗口中绘制,由本地 平台负责显示,因此不同的操作系统下显示出来的外观可能 会有所不同,这种缺乏平台独立性,依赖于本地平台的AWT 组件被称为重量级(Heavy Weight)组件。31立体化教材计算机系列 Java程序设计 7Swing程序中可以指定GUI组件的Look and Feel,真正做到与 平台无关;但AWT程序却做不到这点。32立体化教材计算机系列 Java程序设计 8Swing组件提供了许多AWT组件无法实现

4、的功能, 33立体化教材计算机系列 Java程序设计 9Swing组件绝大多数为轻量级的组件,这类组件的背景可以是 透明的,透明的背景使其上显示的轻量级组件不仅仅被限制 在矩形外框内;AWT组件都是重量级的组件,这类组件的背景 是不透明的,其显示的范围被限制在矩形外框内。34立体化教材计算机系列 Java程序设计 10Swing除具有与AWT原有组件类似的组件外,还增加了一个丰 富的高层组件集合,集合中集成了诸如表格(JTable)、 树(JTree)等组件。然而Swing并不能完全替代AWT,Swing建 立在AWT的基础上,完全舍弃AWT不太可能。例如目前Swing 使用的仍然是Java1

5、.1的事件处理模型。此外,AWT组件与可 运行于任何版本的JDK上,稳定性较高,与Swing组件相比, 其运行速度较快35立体化教材计算机系列 Java程序设计 11SwingSwing的体系结构 Swing的体系结构中采用了MVC设计模式。 MVC将应用程序分为三个功能既相互独立、又相互关联的对 象控制器(Controller) 控制器用于处理外界的输入与事件,描述模型如何响应事件 在模型发生变动时,模型会通知所有依赖于该模型的视图 视图通过控制器响应事件的机制来更新自身,以反映模型 的变动。 33模型(Model) 模型的功能是维护数据的逻辑表达,并提供访问数据的方法31视图(View)

6、视图是模型数据的可视化表达,用于图形化表达模型中数据 的全集或子集的可视数据集,向用户提供数据的可视化版本32立体化教材计算机系列 Java程序设计 12SwingSwing的组件类 Swing的GUI组件类有一个共同的基类JComponent, JComponent由AWT的容器类Container扩展而来。Swing 的类分为两种类型:GUI类和非GUI类。 GUI类是可视的,对应于Swing的GUI组件,它们由JComponent 继承而来,因此被称为J类,这些类的类名首字母一律为J。 Swing的许多GUI类与AWT的组件类是等价的,在命名形式一般 上仅差一个字母J;即Swing组件类

7、的名称是在AWT类名前加一 个大写字母J。如与AWT的Button、Label、TextField类对应 的Swing类的类名分别为:JButton、JLabel、JTextField。Swing的GUI组件类位于包javax.swing中,开发应用程序 时,首先要导入该包,然后才能使用Swing的组件。立体化教材计算机系列 Java程序设计 13非GUI类为GUI类提供服务,并执行一些相关的功 能;它们只 起支持作用,而不产生任何可视化的输出。非GUI 类的典型 例子是Swing的事件处理类,这些类位于 javax.swing.event包中。 立体化教材计算机系列 Java程序设计 14S

8、wingSwing组件的事件处理机制与AWT的事件处理机制完全一样 Swing中完全可以使用java.awt.event包中的各种类进行事 件处理,同时也可以使用为它专门定制的另一个事件处理 包 javax.swing.event中的类来处理事件。但AWT组件只能使 用 前一个包中的事件类,而不允许使用后一个包中的事件类 。 立体化教材计算机系列 Java程序设计 15Swing常用的Swing组件类的层次结构。立体化教材计算机系列 Java程序设计 16Swing编程基础 框架窗体JFrame 常用的Swing窗口容器组件包括:JFrame,JApplet, JDialog,JWindow等

9、。其中JFrame与JDialog分别是AWT 窗口容器组件Frame与Dialog的替代组件。JFrame窗口的生成方法 JFrame窗口包含了四类窗格:RootPane(根窗格)、 LayeredPane(分层窗格)、GlassPane(透明窗格)和 ContentPane(内容窗格)。向JFrame窗口中添加组件时,必 须先取得它的ContentPane对象,然后再使用add()方法把组 件加入到ContentPane对象中,这与AWT的Frame直接使用 add()方法添加组件的做法是不同的。 立体化教材计算机系列 Java程序设计 17框架窗体JFrame【方法一】使用JFrame类

10、的getContentPane()方法首先获得当前JFrame窗体 的ContentPane对象,然后调用ContentPane对象的add()方法添加GUI组 件。 Container contentPane=.getContentPane(); contentPane.add(); 方法一对应的程序代码结构如下: JFrame appWindow=new JFrame(.); /创建JFrame窗口 . /设置窗口的各类属性 Container contentPane=appWindow.getContentPane(); /获取窗体的内容 窗格 contentPane.setLayout

11、(.); /设置内容窗格的布局管理属性 . /设置内容窗格的其他属性 contentPane.add(); /为内容窗格加入GUI组件 . /为内容窗格加入其他GUI组件 appWindow.setVisible(true); /显示出窗口立体化教材计算机系列 Java程序设计 18框架窗体JFrame【方法二】首先生成一个新的容器对象作为JFrame窗体的 内容面板:通常选用面板组件JPanel担当此任,JPanel 本身是容器组件,可以容纳其他的GUI元素(如按钮、菜 单等)。 其次设置容器对象的布局管理器等属性,并使用add()方法 将组件添加到JPanel对象中。 然后使用JFrame

12、类的setContentPane()方法将JPanel对象 设置为JFrame窗体的内容面板。setContentPane()方法 的原型定义为: public void setContentPane(Container contentPane) /设置一个容器对象作为当前窗体的ContentPane立体化教材计算机系列 Java程序设计 19框架窗体JFrame创建JFrame窗口的主要步骤包括: 用语句“import javax.swing.*;”导入Swing包,Swing 包内包含了标准的Swing组件和接口。由于Swing对AWT 的依赖性,加上大多数的Swing应用程序都具备事件处

13、 理的功能,往往还需要在程序再添加以下三条导入包的 语句: import java.awt.*; import java.awt.event.*; import javax.swing.event.*; 使用构造方法创建JFrame窗口。 设置窗口的大小、位置、标题、极小化后的图标等属性 。立体化教材计算机系列 Java程序设计 20框架窗体JFrame设置窗口关闭后的响应行为。 向JFrame窗体添加组件前,必须先取得ContentPane对象 ,或者先为JFrame窗体创建一个ContentPane对象。 为ContentPane对象设置布局管理器及其他属性。 使用add()方法把组件加入

14、到ContentPane对象中;如果 ContentPane对象是新创建的容器组件,还需要使用 setContentPane ()方法将其设置为JFrame窗体的内容 窗格。 创建后的窗口默认状态下是不可见的,需要调用 setVisible()方法或show()方法(show方法已过时,不 提倡使用)使其可见。 立体化教材计算机系列 Java程序设计 21框架窗体JFrame【例】创建一个标题为“JFrame Usage Demo-1”,背景色为粉 红色,大小为300200的窗口。窗口中安置一带有信息的标 签和一个按钮,点击按钮,标签的颜色与内容发生改变。窗 口要求能够关闭。立体化教材计算机系

15、列 Java程序设计 22框架窗体JFrameimport javax.swing.*; import java.awt.*; /swing要用继承AWT的类,需要 导入awt包 import java.awt.event.*; /程序要实现事件处理,需要 导入该包 /声明类继承自JFrame类并实现行为监听者接口 public class Exa_9_1 extends JFrame implements ActionListenerJLabel jlblInfo=new JLabel(“这是我的第一个Swing程 序!“,JLabel.CENTER);JButton jbtnPushMe=

16、new JButton(“Push me to stop“);public Exa_9_1(String title) /构造方法super(title);立体化教材计算机系列 Java程序设计 23框架窗体JFramethis.setSize(300,200);JPanel contentPane=new JPanel(); /生成JPanel对象 contentPane.setLayout(null); /不设任何布局管理 器对象contentPane.setBackground(Color.pink); /设置内 容窗格的背景色为粉红色jlblInfo.setForeground(Color.black);jlblInfo.setBounds(70,30,160,30);contentPane.add(j

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号