




已阅读5页,还剩86页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章图形用户界面 本章主要内容 创建Application程序和Applet小程序 使用图形用户界面 图形用户界面概述 概念 GraphicsUserInterface 简称GUI 作用 是程序与用户交互的窗口 通过GUI可以画线 画矩型 画圆等基本图形 并且能创建按钮 标签 列表 框等组件 使用户建立自己的GUI 实现 通过软件包Java awt AWT提供了在小程序和应用程序中可用的GUI中的基本组件 components 什么是awt包 Java awt包就是为了方便图形用户界面的开发而设计了专门的类库来生成各种标准图形用户界面元素和处理图形界面的各种事件 java awt包中主要类间的关系 java awt包中包含了一个完整的类集以支持GUI程序的设计 java awt包 AWT包含四个主要的类 组件类 Component 容器类 Container 图形类 Graphics 布局管理器类 LayoutManager Component 组件 类 菜单 按键 列表等组件的抽象基本类 封装了组件通用的方法和属性 组件必须放置在容器内 Container 容器 类 扩展Component的抽象基本类 由Container派生的类有Panel Applet Window Dialog和Frame类等 主要功能是容纳其它组件和容器 Graphics 图形类 类 提供在组件上显示文本和图形的方法 LayoutManager 布局管理器 类 定义容器中组件的位置和尺寸的接口 是构成AWT的基础 AWT中包括大量的组件 java awt Component类是一个抽象类 它为其派生类提供了许多功能 如 组件位置 尺寸 父容器 前景和背景色 最小 最大和首选尺寸等 Component 组件 类的重要性 Component 组件 类的结构层次 组件 容器和布局管理器构成了AWT中简单基础关系容器中可以放置组件 一个容器可以容纳多个组件 并使其成为一个整体 从而简化图形化界面的设计 以整体结构来布置界面 所有的容器都可以通过add 方法添加组件 所有的容器都包含布局管理器 用来指定容器中组件的位置和形状 AWT中的许多操作都发生在组件 容器和布局管理器之间 文本组件类 1 文本域 Textfield 作用 是一个单行的文本输入设备 通常用于获取一行用户输入的字符 如用户名 密码的输入等 常见的构造方法TextFieldname1 newTextField TextFieldname2 newTextField intcolumns TextFieldname3 newTextField Stringtext TextFieldname4 newTextField Stringtext intcolumns 使用TextFieldt newTextField 18 创建了一个能容纳18个字符的文本框 容纳字符的个数 初始字符串 文本域方法 setEditable booleanb 设置是否可编辑SetEchochar charc 用于输入密码或口令 importjava applet importjava awt publicclassExample4 1extendsApplet TextFieldt1 t2 t3 声明对象publicvoidinit t1 newTextField 输入密码 10 对象实例化t1 setEditable false 设置文本为只读t2 newTextField 10 t2 setEchoChar 设置掩码t3 newTextField 我是一个文本框 20 add t1 将文本框添加到Applet中add t2 add t3 t3 setText 重新设置了文本 设置文本内容 2 文本区 TextArea TextArea类可以编辑或显示多行文本 并且可以见到水平与垂直滚动条 常见的构造方法 TextAreat1 newTextArea TextAreat2 newTextArea introws intcolumns TextAreat3 newTextArea Stringtext TextAreat4 newTextArea Stringtext introws intcolumns 其中 rows和columns分别表示新建文本区的行数和列数 text为文本区域中初始字符串 文本区创建 想创建20行4列的文本区域 可以使用如下的构造方法实现 TextAreat2 newTextArea 20 4 文本区方法 append Stringstr insert Stringstr intpos replaceRange Stringstr intstart intend 指定位置 替换开始位置 importjava applet importjava awt importjava awt event publicclassExample4 2extendsAppletimplementsActionListener TextAreat1 newTextArea 7 35 TextFieldt2 newTextField 35 Stringstr TextArea可以编辑多行文本 n TextArea编辑和显示多行文本 n TextArea是显示多行文本的编辑器 publicvoidinit t1 setText str add t1 add t2 t2 addActionListener this publicvoidactionPerformed ActionEvente Strings if e getSource t2 s t2 getText t1 append n s 3 标签 Label 标签是不能修改只能查看其内容的文本显示区域 它起到信息说明的作用 Label提供的构造方法 Label Label Stringtext Label Stringtext intalignment 其中 text为标签上显示的文本 alignment是对齐方式 有3个值 CENTER LEFT RIGHT 如 Labelb newLabel Hello 就是在创建标签对象的同时说明了标签上的内容 标签的常用方法 setText Stringstr 修改标签上显示的文本 getText 获得标签的文本内容 例 修改标签中的文本内容if p getText Hello p setText ok elseif p getText ok p setText Hello 由于标签不能接受用户的输入 所以不能引发事件 它不是事件源 按钮类 Button 按钮一般对应一个事先定义好的功能操作 并对应一段程序 当用户单击按钮时 系统自动执行与该按钮相关联的程序 从而完成预先指定的功能 Button提供的构造方法如下 Button Button Strings s指定按钮上的标签文字 getLabel 方法可以返回按钮上标签字符串 setLabel 方法可以修改按钮的标签字符串 按钮类设置监听器方法 addActionListener 设置监听器removeActionListener 删除监听器 事件处理 什么是事件 如果用户在用户界面执行了一个动作 这将导致一个事件的发生 事件是描述发生了什么的对象 在Java中 定义了各种不同类型的事件类 用来描述各种类型的用户操作 事件源 能够产生事件的对象 如文本框 按钮等事件监听器类 实现一个特殊的接口 称为Listenerinterface 当事件源产生了一个事件以后 事件源就会发送通知给相应的事件监听器 监听器对象根据事件对象内封装的信息 决定如何响应这个事件 事件分两类 1 语义 Semantic 事件 ActionEvent 按钮点击 菜单选择 列表框选择 在文本域中按回车键等 AdjustmentEvent 用户调整滚动条 ItemEvent 用户从一组选择框或者列表项中进行选择 TextEvent 文本域或者文本框中的内容发生改变 2 低级 Low Level 事件 ComponentEvent 组件大小改变 移动 显示或者隐藏 KeyEvent 键盘上的一个键被按下或者释放 MouseEvent 鼠标按键被按下 释放 鼠标移动或者拖动 FocusEvent 组件获得焦点或者失去焦点 WindowEvent 窗口被激活 屏蔽 最小化 最大化或关闭 ContainerEvent 添加或者删除一个组件 事件类 在Java中 所有的事件都定义在类库java awt event中 用相应的类来表达不同的事件 例如键盘事件类KeyEvent 鼠标事件类MouseEvent等 这些事件类都是从AWTEvent类派生而来的 事件监听器 每个事件都有对应的事件监听器监听器是接口监听器定义动作的相应方法 事件及相对应的监听器 事件监听器的设置和删除 所有的组件都有的方法 addXXXListener ListenerTypelistener 设置removeXXXListener ListenerTypelistener 删除按钮类设置监听器方法 addActionListener 设置监听器removeActionListener 删除监听器 事件处理机制 1 组件触发一种类型的事件2 此事件由相应类型的Listener 事件监听者 接收并处理 事件及处理机制 调用按扭的addActionListener 方法 为该按扭指定监听者 如 按钮点击事件 1 创建按钮 Buttonb newButton Java 2 通过Add方法 将组件加入到容器中 classMyPanelextendsPanel publicMyPanel Buttonb newButton Java add b 3 为按钮设置监听器 必须实现ActionListener接口的actionPerformed方法 ClassCimplementsActionListenerb addActionListener this publicvoidactionPerformed ActionEventevent 如 鼠标事件 鼠标移动 单击 双击等引发鼠标事件 通过MouseListener和MouseMotionListener接口处理鼠标事件 接口MouseListener中的方法 mousePressed MouseEvente 处理按下鼠标左键 mouseClicked MouseEvente 处理鼠标单击 mouseReleased MouseEvente 处理鼠标按键释放 mouseEntered MouseEvente 处理鼠标进入窗口 mouseExited MouseEvente 处理鼠标离开窗口 接口MouseMotionListener中的方法 publicvoidmouseDragged MouseEvente 处理鼠标拖动 publicvoidmouseMoved MouseEvente 处理鼠标拖动 事件Mouse中的方法 getX getY getModifiers 获取左键或右键getClickCount getSource 实现了多个接口ImplementsMouseMotionListener MouseListener声明多个接口时 可以用逗号隔开 有两个监听器f addMouseListener this f addMouseMotionListener this 则两种类型的事件都会引起ListenDemo类中的方法被调用 键盘事件 按下 松开或敲击某个键时 发生的事件处理键盘事件接口 KeyListener 键盘事件 处理键盘事件的方法 publicvoidKeyPressed KeyEvente 处理按下键 publicvoidKeyReleased KeyEvente 处理松开键 publicvoidKeyTyped KeyEvente 处理敲击键盘 引发键盘事件的方法 PublicchargetKeyChar 返回该事件中键的字符 PublicstaticStringgetKeyText intkeyCode 返回描述键代码的字符串 e getKeyCode 返回按键的代码 事件适配器 作用 只重写要关注的方法 无关的方法不必实现特点 是一个类而不是接口 因而处理事件的类只能继承一个适配器 事件适配器包括以下几种 ComponentAdapter 组件适配ContainerAdapter 容器适配器 FocusAdapter 焦点适配器 KeyAdapter 键盘适配器 MouseAdapter 鼠标适配器MouseMotionAdapter 鼠标运动适配器 WindowAdapter 窗口适配器 事件适配器 publicclassMouseClickHandlerextendsMouseAdapter publicvoidmouseClicked MouseEvente Dosomethingwiththemouseclick 1 publicclassExample4 2extendsAppletimplementsActionListener2 t2 addActionListener this 监听器对象3 publicvoidactionPerformed ActionEvente 事件对象 简单图形用户界面 Frame 框架 与Panel 面板 要生成一个窗口 通常是用Window的子类Frame来进行实例化 而不是直接用到Window类 Frame的外观就像我们平常在windows系统下见到的窗口 有标题 边框 菜单 大小等等 每个Frame的对象实例化以后 都是没有大小和不可见的 因此必须调用setSize 来设置大小 调用setVisible true 来设置该窗口为可见的 创建Frame 框架 类 Framef newFrame Framef newFrame Strings s为Frame的标题字符串 Frame 框架 类的常用方法 setSize intnewWidth intnewHeight 设置窗口大小setVisible booleanvisibleFlag 隐藏和显示一个窗口setTitle StringnewTitle 设置窗口标题setMenuBar 菜单对象名 设置菜单Validate 显示窗口组件 Frame 框架 类实例 importjava awt classExample4 13 publicstaticvoidmain String args Framewin newFrame 最简单窗体 win setSize 300 200 win setVisible true win setLocation 400 300 获取计算机屏幕大小 Toolkittool getToolkit 系统提供的类 得到Toolkit类对象Dimensionscreen tool getScreenSize screen widthscreen height Panel 面板 类 Panel不是顶层窗口 它必须位于窗口或其他容器之内 Panel可以容纳其他组件 在程序中经常用于布局和定位 Panel 面板 类创建步骤 1 创建面板对象Panelp newPanel 2 将面板添加至容器add p 3 在面板上放置组件p add button 例 4 5 布局管理器 在容器中的所有组件的布局 位置和大小 由布局管理器来控制 在java中提供了下面的几种布局管理器 FlowLayoutBorderlayoutGridLayoutCardLayout 默认布局管理器 每种容器都有自己默认的布局管理器 比如Frame 框架 的默认布局是BorderLayoutPanel的默认布局是FlowLayout 如果不希望使用默认布局 则可使用setLayout 方法改变 例如 Panelp newPanel p setLayout newBorderLayout FlowLayout 浮动 布局 最基本的布局 是Panel型和Applet型容器默认使用的布局 组件按照加入的先后顺序从左向右排列 一行排满之后转到下一行继续从左至右排列 每一行中的组件都居中排列 组件不多时 使用这种策略非常方便 但当容器内的组件元素增加时 显得高低不平 添加组件方法 add 组件名 构造方法 FlowLayout 按居中方式放置FlowLayout 对齐方式 按指定方式对齐组件FlowLayout RIGHTFlowLayout CENTERFlowLayout LEFTFlowLayout 对齐方式 左右间距 上下间距 图8 21 当用户改变窗口的大小时 BorderLayout 边界 布局 把容器内的空间简单地划分为东 西 南 北 中5个区域 BorderLayout只能指定5个区域位置 如果容器中需要加入超过5个组件 就必须使用容器的嵌套或其他策略构造方法 BorderLayout 创建组件间无间距的对象 BorderLayout inthgap intvgap 创建有指定组件间距的对象 左右间距 上下间距 importjava awt publicclassExample4 6extendsjava applet Applet publicvoidinit setLayout newBorderLayout 将其他构件加入add East newButton 东 add South newButton 南 add West newButton 西 add North newButton 北 add Center newButton 中 GridLayout 网格 布局 把容器划分为若干行乘若干列的网络区域 组件就位于这些划分出来的小格中 使用步骤 创建GrideLayout对象作为布局 指定划分网络的行数和列数 使用setLayout 方法为容器设置这个布局编辑器 setLayout newGridLayout 行数 列数 调用容器的add 方法将组件加入容器 组件从左到右排满第一行再排第二行 构造函数 GridLayout 行数 列数 GridLayout 行数 列数 水平间距 上下间距 importjava awt importjava applet Applet publicclassExample4 7extendsApplet publicvoidinit setLayout newGridLayout 3 2 add newButton 按钮1 add newButton 按钮2 add newButton 按钮3 add newButton 按钮4 add newButton 按钮5 add newButton 按钮6 importjava awt importjava applet Applet publicclassExample4 7extendsApplet publicvoidinit setLayout newGridLayout 2 3 add newButton 按钮1 add newButton 按钮2 add newButton 按钮3 add newButton 按钮4 add newButton 按钮5 add newButton 按钮6 CardLayout 卡片 布局 包含多个组件 卡片 某一时刻只能显示一个浏览组件方法 first 容器对象 next 容器对象 previous 容器对象 last 容器对象 例 4 8 选择组件类 复选框 Checkbox 单选钮 CheckboxGroup 下拉列表 Choice 滚动列表 List 共同特征 对项 item 的选择共同动作 改变选中项 共同事件 ItemEvent实现接口 ItemListener接口方法 itemStateChanged ItemEvent类的方法 publicObjectgetItem 发生动作的选项名publicintgetStateChanged ItemEvent SELECTED 代表选项被选中 ItemEvent DESELECTED 代表选项被放弃不选 publicItemSelectablegetItemSelectable 动作发生的事件源名 复选框 Checkbox Checkbox
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美术特色写生课程设计
- 2025年事业单位工勤技能-湖南-湖南土建施工人员一级(高级技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖南-湖南保育员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北政务服务办事员五级(初级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-湖北-湖北房管员三级(高级工)历年参考题库含答案解析
- 特殊教育师资培养模式与职业发展研究报告
- 2025年事业单位工勤技能-浙江-浙江电工二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-浙江-浙江有线广播电视机务员一级(高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-浙江-浙江信号工-机车信号设备维修三级(高级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-河南-河南计量检定工四级(中级工)历年参考题库典型考点含答案解析
- 《网络传播概论》考试复习题库(重点160题)
- 工程量确认单
- 新高三开学第一课(共29张ppt) 老师分享
- JJG 966-2010手持式激光测距仪
- GB/T 16657.2-1996工业控制系统用现场总线第2部分:物理层规范和服务定义
- GA/T 150-2019法医学机械性窒息尸体检验规范
- 《人类行为与社会环境》课件
- 头位难产识别和处理
- (完整版)文献调研报告模板
- 《透视灵魂看人生》-曾仕强
- 浅谈新课标下的高中英语教学
评论
0/150
提交评论