java程序设计与应用开发(第2版)下ppt

上传人:tia****nde 文档编号:70555512 上传时间:2019-01-17 格式:PPT 页数:173 大小:1.50MB
返回 下载 相关 举报
java程序设计与应用开发(第2版)下ppt_第1页
第1页 / 共173页
java程序设计与应用开发(第2版)下ppt_第2页
第2页 / 共173页
java程序设计与应用开发(第2版)下ppt_第3页
第3页 / 共173页
java程序设计与应用开发(第2版)下ppt_第4页
第4页 / 共173页
java程序设计与应用开发(第2版)下ppt_第5页
第5页 / 共173页
点击查看更多>>
资源描述

《java程序设计与应用开发(第2版)下ppt》由会员分享,可在线阅读,更多相关《java程序设计与应用开发(第2版)下ppt(173页珍藏版)》请在金锄头文库上搜索。

1、Java程序设计与应用开发(第2版),第1章 快速入门 第2章 Java基本语法 第3章 类 与 继 承 第4章 接口、抽象类与包 第5章 异 常 处 理 第6章 GUI 编 程 第7章 网 络 编 程 第8章 Java I/O系统 第9章 访问数据库 第10章 多 线 程 第11章 项目实践一:贪吃蛇游戏 第12章 项目实践二:开发电力系统中的收费结算系统,第6章,GUI 编 程,本章主要内容,6.1 Swing起步 6.2 AWT事件处理 6.3 布局管理 6.4 常用GUI组件,6.1 Swing起步,6.1.1 Swing概述 6.1.2 一个GUI实例 6.1.3 面板 6.1.4

2、改变应用程序的观感,6.1.1 Swing概述,在Java 1.0中,已经有一个用于GUI编程的类库AWT(Abstract Window Toolkit),称之为抽象窗口工具箱。 1996年,Sun公司和Netsacpe公司在一个称为Swing的项目中合作完善了Netsacpe公司原来开发的一套GUI库,也就是现在所谓的Swing组件。 JFC的概念是在1997年的JavaOne开发者大会上首次提出的,是指用于构建GUI的一组API。实际上,Swing只是JFC的一部分,其他的还有二维图形(Java 2D)API以及拖放(Drag and Drop)API等。,6.1.2 一个GUI实例,这

3、个应用程序很简单,只是在屏幕上显示一个框架组件(JFrame) 。这种框架组件是一种顶层(Top-Level)容器,在Swing组件中还有其他3种顶层容器:JWindow、JDialog和JApplet。 如果希望上面的程序在单击框架的关闭按钮后,应用程序退出,可以添加如下语句: f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,6.1.3 面板,JPanel本身也是一个容器,可以向其中添加其他GUI组件(如按钮JButton);但是JPanel不是顶层容器,因此,要在屏幕上显示JPanel,必须将它添加到一个顶层容器(如JFrame)中。JP

4、anel还具备在自身表面绘制图形的功能,可以通过定制的方式在面板表面绘制各种图形。 1. 作为容器 面板作为容纳其他Swing组件的容器是JPanel最常使用的功能之一。在制作复杂的用户界面时,常常需要使用多个JPanel将复杂的界面分解为相对较简单的子界面,然后再对每个JPanel进行布局。 下面来看一个将面板作为容器使用的例子。这个例子中分为两步。 (1) 将一个标签和一个文本框添加到面板中。 (2) 再将面板添加到框架中,然后显示框架。,程序代码,运行结果:,2. 表面重绘,当一个组件需要进行重绘时,事件处理器会通知该组件,从而引起组件paintComponent(Graphics g)

5、方法的自动调用。 用户永远不需要直接调用该方法。如果用户要求主动发起组件的重绘,可以调用repaint()方法通知组件需要重绘,从而实现paintComponent(Graphics g)方法的自动调用。 paintComponent(Graphics g)方法需要的一个图形参数Graphics也是由系统自动传递进来的。 Graphics类型的对象中存储了用于绘制图形和文本的设置集合(如字体、颜色)以及绘制图形和文本的工具。 可以通过覆盖(Override)组件的paintComponent(Graphics g)方法,在组件表面绘制出我们所希望的内容。,程序代码,运行结果:,6.1.4 改变

6、应用程序的观感,可以用下面的程序片段将应用程序设定为Windows观感: 通常,我们会在程序一开始运行时就设定好观感。但是有的时候,可能会在程序的运行过程中(Swing组件已经显示出来)要求动态改变观感。这时候,在使用UIManager.setLookAndFeel(lnfName)语句设定完观感后,还必须使用SwingUtilities.updateComponentTreeUI()语句来更新所有的已显示组件的观感。动态改变应用程序观感的一般代码框架可以是: UIManager.setLookAndFeel(lnfName); /设定观感 /更新容器frame内的所有组件的观感 SwingU

7、tilities.updateComponentTreeUI(frame);,6.2 AWT事件处理,6.2.1 事件处理简介 6.2.2 事件处理实例 6.2.3 使用事件适配器 6.2.4 AWT事件继承关系,6.2.1 事件处理简介,用户对应用程序进行操作时会产生事件(Event),例如:单击按钮会产生一个动作(Action)事件。 在Java中,事件被封装成一个对象,该对象中包含了和事件相关的信息,如事件源、事件类型等。 给事件源注册事件侦听器,可使用该事件源中的addXXXListener(aXXXListener)方法。依据事件类型的不同,注册的方法名也不同。例如给按钮注册一个动作

8、事件侦听器: aButton.addActionListener(aActionListener);,6.2.2 事件处理实例,实例中提供了一个按钮,单击该按钮可以使得应用程序在Windows和Metal观感之间进行切换,下图显示了运行过程中两种不同的观感。,6.2.3 使用事件适配器,任何实现了WindowListener接口的类所生成的对象均可以注册到窗口事件源。由于WindowListener接口中包含了如下的7个方法: public interface WindowListener void windowActivated(WindowEvent e); void windowClos

9、ed(WindowEvent e); void windowClosing(WindowEvent e); void windowDeactivated(WindowEvent e); void windowDeiconified(WindowEvent e); void windowIconified(WindowEvent e); void windowOpened(WindowEvent e); 因此,一个类要实现WindowListener接口,就必须实现该接口中的所有7个方法。,6.2.4 AWT事件继承关系,AWT事件模型中的每个事件类都是java.util.EventObject

10、类的扩展。AWTEvent直接继承了EventObject,同时AWTEvent又是所有AWT事件类的父类。,AWT事件模型中共提供了14个事件侦听器接口,其中有7个侦听器接口的方法不止一个,因而提供了7个相应的适配器类。,6.3 布 局 管 理,6.3.1 流式布局 6.3.2 边框布局 6.3.3 网格布局 6.3.4 网格袋布局,6.3.1 流式布局,面板的默认布局管理器是FlowLayout。 FlowLayout 类提供了3种构建器public FlowLayout()、public FlowLayout(int alignment)和public FlowLayout(int al

11、ignment、int horizontalGap、int verticalGap)。 alignment参数可以取值FlowLayout.LEFT、FlowLayout.CENTER或是FlowLayout.RIGHT,用于指定组件在一行上的对齐方式。horizontalGap和verticalGap分别表示组件在水平和垂直方向上的间距(以像素为单位)。 默认情况下,alignment取值为FlowLayout.CENTER,horizontalGap和verticalGap均取值为5。,6.3.2 边框布局,GUI组件要在屏幕上显示,最终必须被添加到一个顶层容器中。 内容窗格的默认布局管理

12、器是边框布局(BorderLayout)。 不仅是内容窗格,任何使用了BorderLayout布局的容器均提供5个位置用于存放组件,分别是North、South、East、West以及Center,例,6.3.3 网格布局,网格布局(GridLayout)将容器划分为大小相同的网格,把GUI组件向使用了网格布局的容器中添加时,是按照自左向右,自上而下的位置存放的。 GridLayout类提供了两个构建器: public GridLayout(int rows, int columns) public GridLayout(int rows, int columns, int horizonta

13、lGap, int verticalGap) rows和columns分别指定划分网格的行数及列数。horizontalGap和verticalGap用于指定组件在水平和垂直方向上的间隔,默认情况下均为0。,6.3.4 网格袋布局,网格袋布局也是将用户界面划分为若干个网格(Grid),不同之处在于: 网格袋布局中的每个网格的宽度和高度都可以不一样。 每个组件可以占据一个或是多个网格。 可以指定组件在网格中的停靠位置。 当将一个GUI组件添加到使用了网格袋布局的容器中时,需要指定该组件的位置、大小以及缩放等一系列约束条件。可以使用一个GridBagConstraints类型的对象来存储这些约束条

14、件。,向使用网格袋布局的容器中添加组件的代码框架如下: JPanel p=new JPanel(); JTextField txtField=new JTextField(); p.setLayout(new GridBagLayout();/容器p设置为网格袋布局 /创建约束条件对象 GridBagConstraints constraints=new GridBagConstraints(); /设置具体的约束条件 . /按照约束条件constraints将txtField添加到p中 p.add(txtField, constraints);,例:在一个面板上按照下图所示排列组件;此外,我

15、们还希望面板上的标签在面板缩放时,大小不改变;文本框在面板缩放时,在水平方向上能够相应地缩放,而在垂直方向上大小不改变。 首先,在面板上按照组件排列的需要划分网格 然后对行和列从0开始编号。 对于要添加到该面板中的组件,需要有一个GridBagConstraints 类型的约束条件对象constraints。,6.4 常用GUI组件,6.4.1 标签 6.4.2 文本输入类组件 6.4.3 选择类组件 6.4.4 菜单类组件 6.4.5 对话框 6.4.6 表格,6.4.1 标签,标签(JLabel)通常是用来标识另外一个组件的含义。 如下图所示。可以在标签上显示文字、图像或是文字图像的组合。

16、,创建一个只显示文字的标签对象,可以使用: JLabel labText=new JLabel(“文本标签“); 也可以在标签对象生成后,调用标签对象中的setText()方法来设置标签上显示的内容: labText.setText(“文本标签“); 如果希望在标签上显示图像,可以先创建一个图像对象,然后将该对象作为标签的构建器参数: ImageIcon icon = new ImageIcon(“image/greenflag20.gif“); JLabel labImage=new JLabel(icon); 也可以在标签对象生成后,调用其中的setIcon方法来设置标签上显示的图像: labImage.setIcon(aIcon); /aIcon是一个ImageIcon类型的对象,如果要在标签上同时显示文本和图像,可以使用JLabel提供的一个构建器Jlabel (String text、Icon icon、int horizontalAlignment)。该构建器中,第一个参数是欲显示的文本,第二个参数是欲显示的图像,第三个参数为水平方向上的

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

当前位置:首页 > 高等教育 > 大学课件

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