




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,4,图形用户界面设计,第,章,图形用户界面及组件,“搭积木”式的图形用户界面构建方法,标签组件,文本框组件,下拉列表组件,列表框组件,按钮组件,AWT简介,AWT(Abstract Window Toolkit)抽象窗口工具包是API为Java程序提供的建立图形用户界面GUI(Graphics User Interface)工具集。 AWT是窗口框架,它从不同的窗口平台的窗口系统中抽取共同组件,当程序运行时,将这些组件的创建和动作委托给程序所在的运行平台。 优点: AWT提供用于创建生动而高效的GUI的各种组件。 GUI以通过键盘或鼠标来响应用户的操作。 缺点: 不能使用特定操作系统上复杂组件,最多只能使用4种字体。 现在看来界面丑陋,功能有限。,AWT简介,所有和AWT编程有关的类都放在java.awt包及其子包中。 AWT包中提供了两个基类来表示图形界面元素:Component和MenuComponent。,AWT简介,AWT主要由以下三个部分组成; 组件(Component):定义了所有的图形化界面元素及绘制方法,其中大多数组件是从抽象类Component派生而来。 容器(Containers):容器类用于包含组件,也可以包含容器以便统一操作和管理。 在容器中可以设定它所包含组件的布局方式 组件必须被包含到容器中 布局管理器(Layouts):用于规定用户接口的所有组件在屏幕上如何布置和怎样使界面作到与平台无关。,AWT简介,AWT构建图形用户界面的机制包括: 提供了一些容器组件(如Frame和Panel),用来容纳其他的组件(如按钮Button、复选框Checkbox和文本框TextField)。 用布局管理器来管理组件在容器上的布局。 利用监听器来响应各种事件,实现用户与程序的交互。 提供一套绘图机制,来自动维护或刷新图形界面。,组件(Component),Component组件及其子类,常用组件-1,按钮(Button) public Button() public Button(String label) 如: Button b1 = new Button(); Button okb = new Button(“OK”); 标签(Label) Public Label( ) Public Label(String text) Public Label(String text,int alignmnet) 如: Label nameLabel = new Label(“姓名”); Label sexLabel = new Label(“性别”,Label.CENTER);,常用组件-2,单行文本输入区(TextField) public TextField( ) 创建一个空字符的输入框 public TextField(String text) 用指定的字符串创建一个输入框 public TextField(int colu) 创建一个空的输入框,规定字符长度类似不超过 col指定的数字 public TextField(String text, int columns) 用指定的字符串创建一个输入框,规定字符长度类似不超过 col指定的数字。 例如: TextField t1 = new TextField(“name”,10); TextField t2 = new TextField(“sex”);,例子 登录页面-1,容 器 -Frame-1,Frame是Window的一个子类,是带有标题和缩放角的窗口。 1、Frame可以设置自己的标题、边框、菜单、大小等等 。 2、默认的Frame实例化对象都是没有大小和不可见的,必须调用setSize( )来设置大小,调用setVisible(true)来设置该窗口为可见的。 Frame的构造函数: public Frame( ) public Frame(String title),容 器 -Frame列子,容 器 -Panel,Panel :面板是一个简单的容器类,用于容纳其他的组件或是面板。它有自己的布局管理器。 Panel必须放在Window或其子类才能显示出来。 构造函数: Public Panel() Public Panel(LayoutManager lg),容 器 -Panel例子,布局管理器,布局管理器主要包括: 流程布局FlowLayout 边框布局BorderLayout 网格布局GridLayout 卡布局CardLayout 网格包布局GridBagLayout,流程布局 FlowLayout-1,1、FlowLayout是Panel和Applet的缺省布局管理器。 2、组件的放置规律是从左到右、从上到下进行放置 。 3、容器大小改变时,组件大小不变,相对位置会发生变化。 构造函数: FlowLayout( ); FlowLayout(int align ); FlowLayout(int align, int hgap, int vgap ); 参数说明: 缺省的对齐方式居中对齐 默认的组件横纵间隔都是5个像素 align :对齐方式FlowLayout.LEFT , FlowLayout.RIGHT , FlowLayout.CENTER hgap: 水平间隔 vgap: 垂直间隔,流程布局 FlowLayout-2,网格布局 GridLayout-1,1、容器中组件呈网格状布局,平均占据容器的空间。 2、容器中各个组件同高同宽。 3、容器大小改变时,组件位置不变,大小改变。 GridLayout构造函数: public GridLayout( ) public GridLayout(int rows, int cols) public GridLayout(int rows, int cols, int hgap, int vgap) 参数说明: 默认情况下,每行一个组件。即只有一列。 rows指定行数,cols指定列数。 hgap: 水平间隔,单位像素。 vgap: 垂直间隔,单位像素,网格布局 GridLayout-2,边框布局 BorderLayout-1,1、BorderLayout是Window,Frame和Dialog的缺省布局管理器。 2、BorderLayout把容器分成5个区域:North,South,East,West和Center,每个区域只能放置一个组件。 3、容器大小变化时,组件相对位置不变,大小发生变化 4、如果四周没有组件,则由中间的组件来填充;如果中间没有组件,则空着。 构造函数: public BorderLayout( ) public BorderLayout(int hgap, int vgap) 参数说明: Hgap: 水平间隔,单位像素 Vgap: 垂直间隔,单位像素 如果不制定间隔宽度,则组件间是彼此相邻的。,边框布局 BorderLayout-2,北,南,东,西,边框布局 BorderLayout-3,卡布局 CardLayout-1,1、容器分成许多层,每个组件都是重叠的。 2、每个组件占据整个容器的大小。 3、每层只允许放置一个组件 。 4、一次只显示一个组件。 cardLayout构造函数: public CardLayout() public CardLayout(int hgap, int vgap) 参数说明 1、默认是无间隔的。 2、hgap 水平间隔,表示组件左右两边和容器的间隔,以像素为单位。 3、vgap 垂直间隔,表示组件上下两边和容器的间隔,以像素为单位。,卡布局 CardLayout-2,总结,1、AWT简介 组件/容器/布局管理器 2、容器组件 Frame Panel 3、布局管理器 FlowLayout/GridLayout/BorderLayout 4、常用组件 Button/Label/TextField/List/Choice,事件处理机制,事件授权处理机制:对组件注册事件监听,当有某个动作触发了这个该事件后,Java运行时系统将调用对应的方法响应该操作。 事件处理过程中涉及到三类对象: 1、Event-事件。每个事件都对应java中的一个 类。例如键盘操作对应的事件类是KeyEvent。 2、Event Source-事件源。事件发生的场所,通常就是各个组件,例如按钮Button 。 3、Event handler-事件处理者。接收事件对象并对其进行处理的对象。,使用授权处理模型进行事件处理的一般方法归纳如下: 1、对于某种类型的事件XXXEvent, 定义相应的事件监听器类,该类需要实现与该事件相对应的接口XXXListener; 2、事件源实例化以后,必须进行授权,注册该类事件的监听器,使用addXXXListener(XXXListener ) 方法来注册监听器。,事件处理机制,事件处理机制,事件类 AWTEvent1,1、与AWT有关的事件都是java.awt.AWTEvent类派生的。 2、AWT事件分为两大类 : 低级事件:基于组件和容器的事件。 如:鼠标的进入,点击,拖放等,或组件的窗口开关等。 高级事件:基于语义的事件,它不和特定的动作相关联,而依赖于触发此事件的类。 如:TextField中按Enter键会触发ActionEvent事件。滑动滚动条会触发AdjustmentEvent事件。选中项目列表的某一条就会触发ItemEvent事件。,低级事件 ComponentEvent(组件事件:组件尺寸的变化,移动) ContainerEvent(容器事件:组件增加,移动) WindowEvent(窗口事件:关闭窗口,图标化) FocusEvent(焦点事件:焦点的获得和丢失) KeyEvent(键盘事件:键按下、释放) MouseEvent(鼠标事件:鼠标单击,移动) 高级事件(语义事件) ActionEvent(动作事件:按钮按下) AdjustmentEvent(调节事件:调节滚动条上数值) ItemEvent(项目事件:修改下拉列表中的选项) TextEvent(文本事件:文本对象改变),事件类 AWTEvent2,监听器是接口,根据事件类中定义的动作来定义方法。 AWT中每个事件类都有对应的事件监听器。 例如:ActionEvent对应于ActionListener, MouseEvent对应于MouseListener。 事件监听器的使用: 1、注册事件监听。 2、在对应的事件监听方法中实现处理操作。,事件监听器-4-1,ActionEvent 相对应的接口ActionListener: public interface ActionListener extends EventListener public void actionPerformed(ActionEvent e); 当事件源是命令按钮时,该事件表示按下按钮。 当事件源是文本框时,该事件表示按下Enter键。 比如如何让命令按钮监听动作事件,并做出处理: 1.让按钮的容器类实现该监听器接口;/ implements ActionListener 2.对按钮注册该监听器;/ button.addActionListener 3.实现该事件的处理方法。/ public void actionPerformed(ActionEvent e),事件监听器-4-2,MouseEvent对应的接口MouseListener public interface MouseListener extends EventListener public void mouseClicked(MouseEvent e) ;/鼠标按键在组件上单击(按下并释放)时调用 public void mousePressed(MouseEvent e); public void mouseReleased(MouseEvent e) ; public void mouseEntered(MouseEvent e) ;/鼠标进入到组件上时调用 public void mouseExited(MouseEvent e) ;/鼠标离开组件时调用 KeyEvent相对应的接口KeyListener : public interface KeyListener extends EventListener public void keyPressed(KeyEvent ev); public void keyReleased(KeyEvent ev); public void keyTyped(KeyEvent ev); ,事件监听器-4-3,AWT的组件类中提供注册和注销监听器的方法: 注册监听器: public void add (listener); 如:button. addMouseListener(this); 注销监听器: public void remove (listener); 如:buttonremoveMouseListener(this);,事件监听器-4-4,事件处理的软件实现,一、用容器类实现监听接口 由于Java支持一个类实现多个接口。因此容器类可以实现多个监听接口,容器中的组件将容器实例本身注册为监听器。 示例:FrameCounter.java,事件处理的软件实现,二 、用内部类实现监听接口 用内部类实现监听接口的好处是可以直接访问外部类的成员变量和方法。 示例:ButtonCounter.java,事件处理的软件实现,三、定义专门的顶层类实现监听接口 优点是可以使处理事件的代码与创建GUI界面的代码分离,缺点是监听类中无法直接访问组件。在监听类的事件方法中不能直接访问事件源,而必须通过事件类的getSource()方法来获得事件源。 示例:OuterCounter.java,事件处理的软件实现,四、采用事件适配器 如果实现一个监听接口,必须实现接口中所有的方法,否则这个类必须声明为抽象类。而在实际应用中往往不需要实现中所有的方法。为了编程方便AWT为部分方法比较多的监听接口提供了适配器类。 在程序中可以定义一个继承适配器的类来作为监听器,在这个类中只需要根据实际的需要来实现个别事件处理方法。 示例:AdapterCounter.java,事件适配器Adapter 4-1,1、适配器(adapter)是实现XXXListener接口的抽象类。 2、通过adapter类来实现监听可以缩短程序代码,直接通过继承/内部类来实现处理方法。 3、但当需要多种监听器或该类已经有父类的时候,就不能通过适配器来实现事件监听。,java.awt.event包中定义的事件适配器类: 1ComponentAdapter( 组件适配器) 2ContainerAdapter( 容器适配器) 3FocusAdapter( 焦点适配器) 4KeyAdapter( 键盘适配器) 5MouseAdapter( 鼠标适配器) 6MouseMotionAdapter( 鼠标运动适配器) 7WindowAdapter( 窗口适配器),事件适配器Adapter 4-2,1、在一个类中可以实现多个监听接口。 2、可以由同一个对象监听一个事件源上发生的多种事件 。 3、事件处理者和事件源处在同一个类中。 4、可以通过事件对象获得详细资料。,事件监听器总结,Applet小程序,Applet称为JAVA小应用程序。这种Applet程序的“.class”文件可以被嵌入到Web网页中,当支持JAVA的浏览器下载含有JAVA小应用程序的网页时,就可以解析执行其中的Applet程序。 与一般的JAVA应用程序不同,Applet不是通过main()方法来运行的。在运行时Applet通常会与用户进行互动,显示动态的画面,并且还会遵循严格的安全检查,阻止潜在的不安全因素(例如根据安全策略,限制Applet对客户端文件系统的访问)。,Applet的语言特点,类的定义如: public class AppletApp extends Applet Applet在浏览器中通过标记嵌入在HTML文件中。如: 标记的作用是在网页上加载Applet小程序,标记的code属性指明网页上加载的Applet的类文件名称,width和height属性分别决定了Applet小程序的宽度和高度。,Applet的生命周期,Applet的生命周期的四个方法:,init() start() stop() destroy(),Applet方法介绍-1,init( )方法,创建Applet时执行,只执行一次 当一个新的小程序被浏览器加载,第一个被执行的方法就是init()方法,目的就是对Applet实例对象进行初始化设置。初始化工作可能包含创建Applet所需要的对象、设置初始状态、加载图像或者文字、设置参数等等。 star( )方法多次执行,当浏览器打开该主页,或者是返回该主页时执行。 系统在调用完init()方法之后,将自动调用start()方法。如果前面停止了Applet,也可能会出现重新启动。比如页面被重新访问后,调用该方法再次启动对页面进行处理。,Applet方法介绍-2,paint( )方法,在每一次你的小应用程序的输出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年标准个人房屋买卖合同正式版
- 公司财税知识培训方案课件
- 公司组织财务知识培训课件
- 2025授权招生代理合同模板
- 提高科室间转介PDCA课件
- 2025年进出口代理合同范本
- MyBatis面试实战题库:金融、IT、销售等职业面试题
- 求职路上康平社区面试题全攻略
- 人才孵化计划:新职业规划解析cc经典面试题及答案指导全书
- 食品行业专业试题站
- 安徽省2025年公需科目培训测验答案(科目一)
- 2025贵州省专业技术人员继续教育公需科目考试题库(2025公需课课程)
- FZ/T 01008-2008涂层织物耐热空气老化性的测定
- 精神科病历书写精神科病历书写及范例
- 《乒乓裁判规则规程》考试题库(附答案)
- 依托自主化装备建设分布式能源三联供项目
- 老年肌肉衰减综合征(肌少症)课件
- PCB全制程培训教材
- 应急保障措施及处置方案
- 烟草配送车辆GPS管理方案
- 电力设备预防性试验及维护保养方案
评论
0/150
提交评论