Java程序设计 教学课件 ppt 作者 刘德山 金百东 张建华10_图形用户界面

上传人:w****i 文档编号:94387236 上传时间:2019-08-06 格式:PPT 页数:31 大小:284KB
返回 下载 相关 举报
Java程序设计 教学课件 ppt 作者 刘德山 金百东 张建华10_图形用户界面_第1页
第1页 / 共31页
Java程序设计 教学课件 ppt 作者 刘德山 金百东 张建华10_图形用户界面_第2页
第2页 / 共31页
Java程序设计 教学课件 ppt 作者 刘德山 金百东 张建华10_图形用户界面_第3页
第3页 / 共31页
Java程序设计 教学课件 ppt 作者 刘德山 金百东 张建华10_图形用户界面_第4页
第4页 / 共31页
Java程序设计 教学课件 ppt 作者 刘德山 金百东 张建华10_图形用户界面_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《Java程序设计 教学课件 ppt 作者 刘德山 金百东 张建华10_图形用户界面》由会员分享,可在线阅读,更多相关《Java程序设计 教学课件 ppt 作者 刘德山 金百东 张建华10_图形用户界面(31页珍藏版)》请在金锄头文库上搜索。

1、10 图形用户界面,10.0 本章内容,1 图形用户界面概述 2 几个常用容器及组件 3 布局管理器 4 事件处理 5 其它常用组件 6 其它常用中间容器 7 对话框 8 绘图,10.1 图形用户界面概述,大部分交互式应用具有GUI外观。Java的外观由GUI组件构成,例如窗口,菜单,按钮,滚动条,列表框等。 Java早期用AWT开发图形用户界面。AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,其中包含了一套与本地操作系统图形库交互的接口。 目前组件实现手段有两种:AWT和Swing,分别定义在java.awt和javax.swing包中。 利用AWT来构建

2、图形用户界面时,实际上是利用接口调用操作系统所支持的图形库。由于不同操作系统的图形库是有区别的,在一个平台上存在的功能在另外一个平台上可能不存在。,10.1 图形用户界面概述 Componen的层次关系,Java中构成图形用户界面的各种元素,称为组件(Component)。 组件分为容器(Container)类和非容器类组件两大类 。 容器又分为顶层容器和非顶层容器两大类。 AWT组件一般都是Component的直接子类,是重量级组件,严重地依赖操作系统的实现。 容器类(Container)也是Component类的子类,它可以容纳其它组件,提供层次化的复杂外观。 Window类和Panel类

3、是容器类的子类,GUI设计的一个主要工作就是容器中“摆放”组件。,Swing组件层次关系,10.2 常用容器与组件(Frame &Panel),Component的两个重要子类Frame和Panel。 Frame: Window类的直接子类;初始化为不可见的,可使用setVisible(true)设置为可见的。默认布局为BorderLayout. Panel: 不是顶层窗口,必须位于其他容器内;默认布局为FlowLayout. 示例:TestFrame.java,TestFramewithPanel.java JFrame窗体,JFrame窗体(两个显示示例),方法1:直接在main()方法中

4、运用JFrame。 TestFrame0.java 方法2:应用JFrame派生类MyFrame。 TestFrame2.java,其他Component子类,下面是部分awt组件列表 Button Canvas Label Choice Checkbox List TextArea TextField Scrollbar FileDialog Container ScrollPane Window Panel Frame Dialog Applet 见awt组件范例(AWTExample.java),GUI编程过程,设计和实现图形用户界面的工作主要有以下几点。 (1)创建组件(Compone

5、nt): 创建组成界面的各种元素,如按钮、文本框等。 (2)指定布局(Layout): 根据具体需要排列它们的位置关系。 (3)响应事件(Event): 定义图形用户界面的事件和各界面元素对不同事件的响应, 从而实现图形用户界面与用户的交互功能。,10.3 布局管理LayoutManager,由于AWT组件是利用同级件机制借助于操作系统基础视窗系统的组件来实现的,那么应用的外观在不同平台之间移植可能会导致一个糟糕的外观。 Java引入布局管理器模式,把组件的布局任务交给布局管理器,这个模式不主张明确指出组件的大小和位置,而主张让编程人员选择布局理器,提供布置策略,运行时,再由布局管理器对象确定

6、容器中组件的具体大小和位置。 LayoutManager接口定义了布局管理器的“工作”。,常用布局管理器,五种常用布局管理器: FlowLayout:流布局管理器 GridLayout:网格布局管理器 BorderLayout:方位布局管理器 CardLayout:卡片布局管理器 BoxLayout:盒式布局管理器 使用Container类的 public void setLayout(LayoutManager lm) 方法设置某种布局策略。,布局的示例,FlowLayout是Panel及Applet默认使用的布局管理器。 TestFlowLayout.java BorderLayout是F

7、rame和Dialog默认的。 TestBorderLayout.java FlowLayout布局对组件逐行定位,行内从左到右,一行排满后换行 默认对齐方式为居中对齐 不改变组件的大小,按组件原有尺寸显示组件 可在构造方法中设置不同的组件间距、行距及对齐方式 前面的示例是用AWT组件实现的,请读者自行改为用Swing组件实现.,FlowLayout布局管理器,new FlowLayout(FlowLayout.RIGHT,20,40); 右对齐,组件之间水平间距20个像素,竖直间距40个像素; new FlowLayout(FlowLayout.LEFT); 左对齐,水平和竖直间距为缺省值:

8、5; new FlowLayout(); 使用缺省的居中对齐方式,水平和竖直间距为缺省值:5;,BorderLayout 布局管理器,BorderLayout是Frame类的默认布局管理器 BorderLayout将整个容器的布局划分成东、西、南、北、中五个区域,组件只能被添加到指定的区域 如不指定组件的加入部位,则默认加入到Center区域 注意:每个区域只能加入一个组件, 如加入多个,则先前加入的 组件会被遗弃,GridLayout 布局管理器,GridLayout型布局管理器将布局划分成规则的矩形网格,每个单元格区域大小相等. 组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到

9、下. 在GridLayout构造方法中指定分割的行数和列数. new GridLayout(3,4); 示例:TestGridLayout.java,布局管理器总结,如果为容器选用布局管理器,那么容器中组件的位置和大小完全有布局管理器决定。 因此用户无法在这种情况下设置组件的这些属性。如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖。 如果用户确实需要亲自设置组件大小或位置,可以通过setLayout(null)方法不为容器选用任何布局管理器。这样可以通过编程来实现组件布局。 通过编码调用组件的 setLocat

10、ion(), setSize(), 或 setBounds()方法来实现布局,但是编码工作量大,一般使用IDE来实现一个“所见即所得”的GUI画面,然后由IDE辅助生成代码。 每个容器都有一个默认的布局管理器。,布局管理器总结,Frame Frame是一个顶级窗口。 Frame的缺省布局管理器为BorderLayout。 Panel Panel无法单独显示,必须添加到某个容器中。 Panel的缺省布局管理器为FlowLayout。 当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器。因此,可以利用Panel使得BorderLayout中某个区域显示多个组件。

11、综合应用示例:例10-4TestGui.java,例10-5TestGui2.java,10.4 事件处理(事件及事件监听器),Java中的图形用户界面中,对于用户的鼠标、键盘操作发生反应,就必须进行事件处理。 产生事件的对象是事件源。 这些鼠标、键盘操作等统称为事件(Event)。 对这些事件作出响应的程序,称为事件处理器(Event handler)。 Java的事件处理委托模型: 事件源产生事件(消息),“委托”给“听众”对象进行事件处理,充分利用了接口设计(抽象方法)的特点,使得事件源和事件类设计和事件处理器类分离。,10.4 事件处理 (Java事件处理模型),事件编程相关概念: 事

12、件类-继承于AWTEvent类 事件源-可通过getSource()方法得到 听众接口(定义事件处理方法) 听众注册 事件广播 实例:TestActionEvent.java,10.4 事件处理(事件处理内容),事件监听器框架是由Java系统本身完成的,它的消息响应方法形式是固定的形式,所以一定是多态调用方式. 又因为不同事件源产生多种多样的事件,Java系统把消息分了类,每类对应一个或几个特定的方法,定义在不同的接口中,我们只需要按规则实现接口中定义的方法就可以了。 Java图形界面处理的主要事件内容如表10.1所示。 示例:用JFrame设计一个窗口,采用FlowLayout布局,向窗口中

13、添加一个“关闭”按钮,当单击“关闭”按钮时,分别利用四种事件响应方法,关闭该应用程序。 作业:(1)参考教材用内部类和外部类实现. (2)文本框内文本的复制的实现。,10.4 事件处理(事件适配器),一个类实现一个接口,必须实现接口中的全部方法。 用实现接口的方法,例如WindowListener接口包括7个方法,即使一些方法不做任何事情,也得书写。 为简化编程,针对一些事件监听器接口定义了相应的实现类事件适配器类(Adapter),在适配器类中,实现了相应监听器接口中所有的方法,但不做任何事情。 【例10-9】给窗口加鼠标事件,当按下鼠标时,退出应用程序. TestMouseEvent.ja

14、va,10.4 事件处理(事件适配器),事件适配器包括如下几种: (1)ComponentAdapter(组件适配器); (2)ContainerAdapter(容器适配器); (3)FocusAdapter(焦点适配器); (4)KeyAdapter(键盘适配器); (5)MouseAdapter(鼠标适配器); (6)MouseMotionAdapter(鼠标运动适配器); (7)WindowAdapter(窗口适配器)。 程序中可以继承事件适配器类,并只重写所需要的方法,而不用写那些空的方法体。 示例:实现对窗口的关闭按钮编程。,10.4 事件处理(在事件处理中使用内部类及匿名类),在J

15、ava事件处理程序中,由于与事件相关的事件监听器的类经常局限于一个类的内部,所以经常使用内部类。 可以方便地访问包装类的成员; 内部逻辑清晰; 该类不可以也不需要被其他类访问。 实例:文件夹InnerClass 而且定义的内部类在事件处理中的使用就实例化一次(在其他地方不会用到该类,所以不需要类名),所以经常使用匿名类。,10.5 其他常用组件,10.5.1 JCheckBox、JRadioButton 10.5.2 JComboBox 10.5.3 JList 10.5.4 JTable 参见相应的例子,10.7 对话框(概述),对话框是常用的数据操作窗口,它和JFrame一样,都是顶层容器

16、,可以独立显示。 对话框分为无模式和有模式两种情况。 无模式对话框含义是:当该对话框出现后,仍可切换到其它组件界面,进行相应操作,可以理解为“并行”操作; 有模式对话框含义是:当该对话框出现后,不能切换到其它组件界面,只能该界面操作结束后,才能进行其它组件界面的操作,可以理解为“串行”操作。,10.7 对话框(JDialog类),对话框被封装在JDialog类中 JDialog常用方法如下。 JDialog(); 构造一个没有标题的对话框,对话框依赖一个默认的不可见的窗口。 JDialog(Frame owner) ; 构造一个没有标题的无模式对话框。 JDialog(Frame owner, boolean modal); 构造一个没有标题的对话框,boolean型参数modal指定是否为模式对话框。 JDialog(Frame owner, String title) ; 构造一个有标题的无模式对话框。 JDialog(Frame owner, String title, boolean modal) ; 构造一个有标题的对话框,boo

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

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

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