图形用户界面00606_第1页
图形用户界面00606_第2页
图形用户界面00606_第3页
图形用户界面00606_第4页
图形用户界面00606_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图形用户界面设计 2 主要内容 Java的GUI简介自定义图形设计图形 文字 图象Java的标准组件容器和组件GUI的布局事件处理 3 图形用户界面 GUI 字符界面用字符串 命令行的方式与用户交互图形用户界面 GraphicsUserInterface用直观的图形来表示数据用直观 方便的GUI标准组件来接收命令GUI组成成分的标准化使用图形的方式借助菜单 按钮等标准界面元素和鼠标操作 来帮助用户方便地向计算机系统发出命令 启动操作 并将系统运行的结果同样以图形的方式显示给用户 4 用户界面设计原则 控制权在用户界面与操作的风格一致性宽容 容错 性简洁与美观并重 5 图形用户界面简介 图形用户界面的构成容器 布局 安排标准组件用户自定义成分设计 实现图形用户界面的工作创建GUI各组成成分 并安排从属位置关系 根据具体需要对其进行排序 构成完整外观 定义GUI各成分对不同事件的响应 实现与用户的交互功能 6 界面构成 容器 用户自定义成分 容器是用来组织其他界面成分和元素的单元 一般一个图形用户界面对应一个复杂容器 如一窗口标准组件是图形用户界面的最小单位 它里面不再包含其他的成分 如单选按钮 文本框 菜单用户自定义成分是指编程人员根据用户需要设计一些用户自定义的图形界面成分 如绘制几何图形 标准组件 7 界面元素 容器是用来组织其他界面成分和元素的单元 可以形成容器的层次 构筑复杂结构Window Frame Applet Dialog 组件是图形用户界面的基本单位 它里面不再包含其他的成分 GUI组件是图形用户界面标准化的结果 常用的组件有 选择类的 单选按钮 复选按钮 下拉列表 文字处理类的 文本框 文本区域命令类的 按钮 菜单等GUI组件的作用是完成与用户的交互 包括接收用户的命令 文本或选择输入 向用户显示一段文本或一个图形等 8 界面元素 使用组件通常需要如下的步骤创建某组件类的对象 指定其大小等属性 使用某种布局策略 将该组件对象加入到某个容器中的某指定位置处 将该组件对象注册给它所能产生的事件对应的事件监听者 重载事件的处理方法 实现利用该组件对象与用户交互的功能 用户自定义成分显示文字 绘制图形 显示图象 不能像标准组件一样被系统识别和承认 只起装饰作用 不能响应用户的动作 不具有交互功能 9 图形用户界面 GUI Java的图形用户界面编程 为方便图形用户界面的开发 设计了专门的类库来生成各种标准图形界面元素和处理图形界面的各种事件 这个用来生成图形界面的类库就是java awt包 AWT是abstractwindowtoolkit抽象窗口工具集的缩写 AWT类库中的各种操作被定义在一个窗口中进行 开发人员用AWT开发出的图形用户界面可以适用于所有的平台系统 10 AWT包 AbstractWindowToolkit 抽象窗口工具集 提供各种构成GUI的标准构件 AWT类库中的各种操作被定义在一个窗口中进行的 抽取不同软硬件平台中所实现的窗口的公共特性 依赖于具体平台系统实现 显示效果可能不同 提供与机器无关的基本GUI标准组件选择类组件 单选按钮 复选框 下拉选单 列表框文字处理类组件 标签 文本框 编辑框 命令类组件 按钮 工具栏 菜单等 11 从一个简单窗口开始 创建GUI应用程序Frame必不可少它是带标题的顶层窗口 是构建应用程序图形界面的基础 它为应用程序实现人机交互提供了对话窗口先来建一个空的窗口应用 Empty java注意 一定要处理关闭窗口的事件 12 importjava awt mustimporttouseGUI mustextendsFrameinanapplicationpublicclassEmptyextendsFrame 暂时采用1 0 2的事件处理方法 关闭窗口publicbooleanhandleEvent Eventevt 根据Event类中参数evt的id值来判断发生事件的种类if evt id Event WINDOW DESTROY System exit 0 return的返回值表示将余下的事件处理交给handleEvent 的父 类处理 从而保证对事件的正常处理returnsuper handleEvent evt publicstaticvoidmain String args Framef newEmpty f setSize 300 200 f setVisible true 13 绘制用户自定义成分 用户自定义成分属于构成GUI的非标准部分无法响应用户事件一般仅仅起背景装饰 输出效果突出的作用Java中的用户自定义成分显示文字绘制图形显示图片 14 绘制用户自定义成分 一般在容器中 窗口 或画布上绘制 利用Java awt类库中的类及其方法绘制用户自定义的图形界面成分 Graphics类包含很多绘制图形和文字的方法 首先要获得Graphics类的实例 然后利用其方法绘制 Graphics类的实例一般作为相关方法的参数传递进来 paint Graphicsg Java程序图形界面的坐标设置 15 绘制图形及其相关方法 drawLine x1 y1 x2 y2 直线drawRect x y w h 矩形drawOval x y w h 圆或椭圆fillOval x y w h 实心圆或椭圆drawPolygon X坐标数组 Y坐标数组 顶点个数 画多边形drawArc x y w h 开始角度 弧度角度 setColor Colorc 设置颜色setFont Fontf 设置字体getColor getFont 16 绘制图形及其相关方法 从 x1 y1 到 x2 y2 画直线drawLine x1 y1 x2 y2 参数均为int画弧线drawArc x y w h 参数均为intx y为绘制弧形的左上角的坐标 w h为弧形的宽度和高度 为弧形的起始角 为弧形的弧度 为正 表顺时针方向 为负 表逆时针方向 以 x y 为左上角 w为宽度 h为高度画矩形drawRect x y w h 参数均为intfillRect x y w h clearRect x y w h 17 绘制图形及其相关方法 画圆或椭圆drawOval x y w h x y为绘制圆或椭圆的左上角的坐标 w h确定了椭圆的宽度和高度画实心圆或椭圆fillOval x y w h 画多边形drawPolygon X坐标数组 Y坐标数组 顶点个数 P 185 18 绘制图形及其相关方法 例子 sanmao java 19 画头部 椭圆方法drawOvalg setColor Color black setColor用来设置要使用的颜色g drawOval 40 40 120 150 画头发 直线方法drawLine 画弧方法drawArcg drawLine 100 10 100 60 g drawArc 110 20 100 80 90 90 画嘴巴 填充画弧方法fillArcg fillArc 60 130 80 40 180 180 画耳朵 填充椭圆方法fillOval 复制图形方法copyAreag fillOval 25 92 15 30 g copyArea 25 92 15 30 136 0 拷贝某区域的图形至另一区域 画身体 多边形方法fillPolygong fillPolygon polygon x polygon y polygon pt num 20 显示文字 字体显示效果类 Font一个Font类的对象表示了一种字体显示效果 包括字体类型 风格和字号 Fontmf newFont String字体 int风格 int字号 字体 TimesRoman Courier Arial等风格 三个常量Font PLAIN Font BOLD Font ITALIC字号 字的大小 磅数 设置当前使用的字体 setFont Fontfn 获取当前使用的字体 getFont 例 UseFonts java 21 StringFontName TimesRoman Courier Arial intFontStyle Font PLAIN Font BOLD Font ITALIC StringStyleName PLAIN BOLD ITALIC publicvoidpaint Graphicsg for inti 0 i 3 i for intj 0 j 3 j setanewfontanddrawastringwiththenewfontg setFont newFont FontName i FontStyle j 12 g drawString ABEXYZ FontName i StyleName j 10 20 i 3 j 2 endofpaint 22 paint 与update 某组件的paint 和update 为系统自动调用的有关图形绘制的方法 不可人为编程调用 但可编程重新定义其操作内容使用repaint 方法可以触发update 方法 23 显示图象 图形与图象 java支持gif和jpeg格式保存二进制图象的java awt Image类获取Image对象的方法getImage 图象文件所在的URL getImage 图象文件所在的URL 图象文件名 Applet类以及java awt Toolkit中均有方法的定义注意 在application中只能使用Toolkit 而在Applet中 两者均可使用 24 显示图象 在applet小程序中 可使用Applet类的getImage方法获得图象 Imageig getImage 而在application中就只能使用ToolKit类的getImage方法 Imageig getToolkit getImage 文件名 然后用Graphics类的drawImage方法显示Image对象 25 显示图象 显示图象的方法drawImage Image对象 x y 背景色 ImageObserver java awt Graphics类中定义了此方法第一个参数是保存图像数据的Image对象 第二 三个参数是图像的左上角坐标 它们决定了图像在容器中的显示位置 ImageObserver为一个接口 java的组件类实现了此接口 此处可理解为观察 显示Image对象容器 编程时一般可使用this 用于提示图象是否加载完成 26 显示图象 表示颜色的类Color显示的字符串或图形的颜色可以用Color类的对象来控制 每个Color对象代表一种颜色 用户可以直接使用Color类中定义好的颜色常量 也可以通过调配红 绿 蓝三色的比例创建自己的Color对象Color red green blue 来创建非缺省色调用Graphics对象的setColor 方法可把当前的缺省颜色改成新建的颜色ColorblueColor newColor 0 0 255 g setColor blueColor P 189 27 Color类 构造方法1 设置颜色 Colorc newColor intred intgreen intblue 范围 0 255newColor 200 200 200 newColor 255 0 100 构造方法2Colorc newColor floatred floatgreen floatblue 范围 0 0 1 0Color类定义了13种颜色常量值Color black Color blue Color gray Color red 对GUI的组件有四种与颜色相关的方法来设置和获取其背景色和前景色 setBackground Colorc getBackground setForeground getForeground 28 例 DrawMyImage javapublicclassDrawMyImageextendsFrame 获得Toolkit实例的方法getDefaultToolkit Toolkittoolkit Toolkit getDefaultToolkit ImagemyImage publicDrawMyImage 获得Image对象 图象文件在当前目录下时myImage toolkit getImage Invntory gif 在paint方法中绘制图象publicvoidpaint Graphicsg g drawImage myImage 0 40 Color orange this 29 GUI标准组件概述 构建程序的图形用户界面的主要任务有两个创建各界面组件并排列成图形用户界面的外观定义这些组件对不同事件的影响从而完成图形用户界面功能组成图形用户界面的成分有三类用户自定义类容器 是能够容纳并排列其他组件的对象组件 放置在容器中的对象在Java中 容器和组件是由AWT包中的对象来代表 这些对象间的层次关系如下图 30 AWT类层次关系图 31 GUI标准组件概述 基本组件被安放在容器中的某位置 用来完成一种具体的与用户交互的功能 使用基本组件一般包括如下的步骤创建某种基本组件类的新对象 指定该对象的属性比如 外观 大小等将该组件对象加入到某个容器的合适位置创建该组件对象的监听者 即实现以该组件为事件源的事件对应的监听者接口 也可以使现有的类实现该接口成为监听者 将该组件对象注册给此监听者 并在监听者内部实现监听者接口中定义的方法 对该组件可能引发的事件加以处理 定义新加入组件对象的交互性界面功能 比如 接收用户输入的文本 在屏幕显示输出等 32 GUI标准组件 Component 所有组件和容器的抽象父类显示功能 paint update repaint 显示效果控制 字体 颜色 位置 尺寸图象处理 一般利用Canvas和Container来显示图像事件处理机制 java1 1 addXXXListener removeXXXListener 33 Component类 可显示在屏幕上的图形对象 可与用户交互 是所有组件和容器的抽象父类 其中定义了一些每个容器和组件都可能用到的方法 add PopupMenupopup 在组件上加入一弹出菜单addFocusListener FocusListenerl 将发生在本组件上的事件注册给监听者 以进行事件处理 setSize intwidth intheight 设置组件尺寸repaint intx inty intwidth intheight 重画组件setFont Fontf 设置组件字体setBackground Colorc 设置组件背景色setVisible booleanb 设置组件是否可见 34 GUI标准组件 简单构件 人机交互的基本工具 控制 Button Checkbox Label等TextComponent TextArea TextField Canvas复杂构件 Container 安放排列其他构件的容器 PanelWindow 35 Container 容器 排列其中包容的构件定位布局策略set getLayout 包容其他基本构件增加构件 add 删除构件 remove 控制是否显示容器及其中组件setVisible true false 36 Container容器组件 Window 无边框 菜单的空白窗口 不需要其他组件支撑 独立显示 Frame 用于Application 含边框 标题和菜单的独立窗口Dialog 依赖于Frame的非独立窗口 没有菜单条 不能改变大小 Panel 面板 属于无边框容器 必须放在Window组件中 或Web浏览器窗口 才能显示 它为一矩形区域 在其中可摆放其他组件 可以有自己的布局管理器 无边框容器包括Panel和Applet 其中Applet为Panel的子类基本方法add Componentcomp 将指定组件放到容器中getComponent intindex 获取指定序号的组件remove Componentcomp 删除指定组件setLayout LayoutManagermgr 设置容器布局 37 容器的组件布局 布局管理器 layoutmanager 用于控制组件在容器中的布局负责确定组件在容器中的位置和大小 调用容器的setLayout 布局管理器对象 方法 为容器指定某种布局 当容器需要定位组件和确定组件大小时 就会给布局管理器对象发消息 让它完成该项工作 直接管理组件调用容器的setLayout null 方法 关闭布局管理器 调用每一个组件的setLocation 方法决定组件位置 调用每一个组件的setSize 方法决定其大小 38 布局管理器种类 在Java的GUI界面设计中 布局控制是通过为容器设置布局编辑器来实现的 Java awt包中共定义了五种布局编辑类 每一个布局编辑类对应一种布局策略 FlowLayout 组件在一行中按加入的先后顺序从左至右水平排列 排满后折行 每行中的组件都居中排列 BorderLayout 把容器空间划分为北 南 西 东 中五个区 每加入一个组件都应说明把这个组件加在那个区域中 CardLayout 每一个组件作为一个卡片 容器仅显示多个卡片中的某一个GridLayout 以行和列的网格形式安排组件GridBagLayout 更复杂 功能更强的网格布局 39 确定容器布局 缺省的布局管理器Window Frame Dialog BorderLayout 缺省的窗口容器的管理器Panel Applet FlowLayout 缺省的Panel布局管理器选择布局管理器的方法建立布局管理器类的对象利用容器的setLayout为容器指定布局 即指定一个布局管理器的对象 40 确定容器布局 改变缺省布局管理器的方法 例 BorderLayoutB newBorderLayout C1 setLayout B orC1 setLayout newBorderLayout 例 将myFrame布局设定为FlowLayout类型myFrame setLayout newFlowLayout 41 Frame Frame Stringtitle 构造一个新的不可见的frame隐含的布局管理器是 BorderLayoutsetLayout 设置新的布局管理器 add Componentcomp 在容器上增加一个组件 在容器为不可见的状态时加 voidsetSize intwidth intheight 设置组件大小setVisible true 设置组件可见 42 Frame Panel Framefm1 newFrame Hello fm1 setSize 400 350 fm1 setBackground Color gray fm1 setLayout null Panelpn1 newPanel pn1 setSize 100 100 pn1 setBackground Color red pn1 setLocation 0 50 fm1 add pn1 fm1 setVisible true 43 FlowLayout布局管理器 构造方法 FlowLayout FlowLayout intalign inthgap intvgap align 对齐方式 LEFTCENTERRIGHThgap 组件水平间距 象素 vgap 组件垂直间距无参数的构造方法创建的FlowLayout对象 其对齐方式为CENTER居中方式 组件间的横纵间距都为5个像素 44 FlowLayout布局管理器 Framef newFrame FlowLayout f setSize 400 300 不起作用f setBackground Color gray f setLayout newFlowLayout FlowLayout LEFT 10 20 b1 newButton button1 b2 newButton button2 b3 newButton button3 f add b1 f add b2 f add b3 f setVisible true f pack 询问布局管理器窗体大小 45 BorderLayout布局管理器 setLayout newBorderLayout add b1 BorderLayout NORTH 当容器大小改变 组件相对位置不会改变 46 BorderLayout布局管理器 f newFrame BorderLayout f setSize 200 200 b1 newButton button1 b5 newButton button5 f add b1 BorderLayout NORTH f add b2 BorderLayout SOUTH f add b3 BorderLayout WEST f add b4 BorderLayout EAST f add b5 BorderLayout CENTER f setVisible true 47 Border Panel classMyFrameextendsFrame MyFrame Buttonb1 newButton 1 Buttonb2 newButton 2 Buttonb3 newButton 3 Buttonb4 newButton 4 Panelp newPanel p add b1 p add b2 add p BorderLayout NORTH add b3 BorderLayout WEST add b4 BorderLayout CENTER pack setVisible true 48 GridLayout布局管理器 创建GridLayout对象作为布局编辑器 指定划分网格的行数和列数 网格大小一样 setLayout newGridLayout 行数 列数 setLayout newGridLayout 行数 列数 行间隔 列间隔 调用容器的方法add 将组件加入容器 组件填入容器的顺序将按照第一行第一个 第一行第二个 每个网格中都必须填入组件 如果希望某个网格为空白 可以为它加入一个空的标签 add newLabel 49 GridLayout布局管理器 f newFrame GridLayout f setLayout newGridLayout 2 3 f setSize 200 100 f setBackground Color gray b1 newButton 1 b6 newButton 6 f add b1 f setVisible true 50 布局例 Framefm newFrame fm setLayout newFlowLayout tf newTextField 22 fm add tf Panelp1 newPanel p1 setLayout newGridLayout 4 3 p1 add Panelp2 newPanel p2 setLayout newGridLayout 4 3 p2 add fm add p1 fm add p2 51 GridBagLayout布局管理器 每个GridBagLayout对象维护一个动态矩形网格 每个组件可占据一个或多个单元作为它的显示区域 每一个组件都与一个GridBagConstraints类的实例相连 以指定在显示区域中如何摆放 并可确定大小 步骤 setLayout newGridBagLayout GridBagConstraintsgbc newGridBagConstraints gbc gridx 0 属性赋值 add button1 gbc 52 GridBagLayout布局管理器 设置GridBagConstraints类实例属性值 gridxgridy组件显示区域的左上角单元格坐标gridwidthgridheight指定显示区域行 列单元数RELATIVE紧挨着前一个组件摆放fill当显示区域大于组件时如何扩充组件 HORIZONTAL水平充满VERTICAL垂直充满BOTH全部填充NONE不调整 隐含 ipadxipady指定组件间最小间隔anchor当显示区域大于组件时如何摆放组件 对齐方式 CENTER 隐含 NORTH EAST SOUTH WEST SOUTHEAST NORTHEAST SOUTHWEST NORTHWEST 53 CardLayout布局管理器 使用CardLayout的容器表面可以容纳多个组件 将每一个组件视为一张卡片 同一时刻只能显示一个组件 setLayout newCardLayout CardLayout方法 按序指定组件 first Containerparent 显示第一个版面的内容last Containerparent 显示最后一个版面的内容previous Containerparent 显示前一个版面的内容next Containerparent 显示下一个版面的内容CardLayout方法 按名显示组件 addLayoutComponent Stringname Componentc show Containerparent Stringname 54 利用AWT创建自己的GUI GUI外观设计设计标准构件层次关系 构件层次结构关系树设置容器布局策略 setLayout 生成标准构件向容器中添加组成构件 add 方法构件事件处理例 AWTComponent java 55 publicclassAWTComponentextendsFrame publicAWTComponent setSize 450 300 设置Frame大小setLayout newFlowLayout 设置布局 创建组件Group1 newCheckboxGroup 创建单选按钮组radioButton1 newCheckbox male Group1 false add radioButton1 把组件加入容器radioButton2 newCheckbox female Group1 false add radioButton2 setVisible true 显示容器及组件 还缺什么吗 56 Java1 0 2的事件处理 使用单一的java awt Event类来接受所有类型的事件 使用action handleEvent 以及其他的一些事件处理方法 如鼠标事件 键盘事件 焦点事件 来进行相应事件的事件处理 缺点 造成长if分支语句组 不利于面向对象的编程 57 Java1 1对事件处理的改进 引入java awt event包更加面向对象 易于理解定义了事件的 发生者 和 监听者 对象按钮事件 文本事件 选择事件 调整事件 鼠标事件 键盘事件等事件以类层次来表达 取代了1 0 2中的单一的类 并可以自定义事件类型 58 事件及处理机制 用户操作GUI组件时会引发各种事件 事件 描述 发生了什么事情 的对象 系统根据用户的操作构造出相应事件类的对象 事件源 事件的产生地 事件处理程序 是一个方法 它接收一个事件对象 分析它 并完成对该事件的处理 每个事件有一个相应的监听者接口 它规定了能够接收 并处理 该类事件的方法的规范 监听者 实现了监听者接口的类 它包含有事件处理程序 编程人员要为事件源指定监听者对象 即指定处理某种事件的事件处理程序 59 事件处理机制 组件 事件发生者 触发一个相应类型的事件此事件由相应类型的Listener 事件监听者 接收并处理 60 事件及处理机制 调用按扭的addActionListener 方法 为该按扭指定监听者 61 几个有用的概念 事件 在java awt event包中定义了若干类型的事件类监听者接口 特定类型的Listener接口 用于监听特定类型的事件监听者类 是实现了某种监听者接口的类 由编程者定义事件监听者 是某个监听者类的对象 由编程者使用new创建 62 实现步骤 根据需要定义相应类型的监听者类 在类的定义中完成事件的处理 建议使用innerclass定义 创建事件监听者对象 为将会触发事件的组件C注册相应的事件监听者对象 使用C的addXXXListener 方法 例 ButtonAct java 63 publicclassButtonActextendsFrame publicButtonAct 为b1注册事件监听者B1b1 addActionListener newB1 add b1 利用innerclass结构定义监听者类classB1implementsActionListener 利用actionPerformed方法进行事件处理publicvoidactionPerformed ActionEvente who setText Button1 64 事件与监听者类型 XXXListener接口与XXXEventXXX为特定类型常用类型 Action Focus Key Window MouseEventvs Mouse MouseMotionListener注册与取消 组件包含的新方法addXXXListener 与removeXXXListener 参考 eventtables html 65 监听者接口中有什么 每种Listener接口均定义了一套abstract方法 编程者必须在监听者类中实现这些方法来做事件处理 例 ActionListener actionPerformed WindowListener windowOpened Closing Closed Activated Deactivated Iconified Deiconified 66 使用ListenerAdapter 由于接口中的方法为abstract方法 所以在监听者类中要实现所有的方法 较为烦琐 为了简化编程 引入了Adapter 具有两个以上方法的监听者接口均对应一个XXXAdapter类 提供了接口中每个方法的缺省实现 67 使用ListenerAdapter 续 例 classMyWindowListenerextendsWindowAdapter publicvoidwindowClosing WindowEvente System exit 0 参考 Listener html例 DoubleClick java 相应鼠标事件 68 publicclassDoubleClickextendsFrame Vectorm vLocs 保存鼠标单击过的各点 用以绘制各点连线Pointm CursorLoc 跟踪当前鼠标位置 用以绘制十字光标publicDoubleClick m vLocs newVector m CursorLoc newPoint 100 100 setSize 400 400 为Frame注册3个事件监听者addMouseListener newclick addMouseMotionListener newmove addWindowListener newwd publicvoidpaint Graphicsg 绘制十字光标 连接各点 69 classclickextendsMouseAdapter 鼠标事件监听者类publicvoidmouseClicked MouseEvente 响应点击if e getClickCount 1 双击时清除向量中各点m vLocs removeAllElements else 单击时在向量中增加一点m vLocs addElement e getPoint repaint 重新绘制一次 classmoveextendsMouseMotionAdapter 鼠标移动监听者类publicvoidmouseMoved MouseEvente 响应移动m CursorLoc newPoint e getX e getY repaint 重新绘制一次 70 事件类 ActionEvent类 属于动作事件 包括 点击按钮 双击一个列表中的选项 选择菜单项 在文本框中按回车 最典型的例子是 鼠标点击按钮所产生的事件 经ActionListener接口触发一连串动作 再由actionPerformed 方法完成这些动作 e getSource 返回事件发生的对象 名 e getActionCommand 返回按扭名 动作事件的命令字符串 ActionListener接口publicvoidactionPerformed ActionEvente 71 图形用户界面例 importjava awt importjava awt event publicclassa publicstaticvoidmain Stringargs MyFrameform1 newMyFrame classMyFrameextendsFrame MyFrame super 窗口标题 setSize 200 100 setFont newFont TimesRoman Font BOLD 20 72 图形用户界面例 setLayout newFlowLayout Buttonb newButton close add b b addActionListener newBprocess setVisible true classBprocessimplementsActionListener publicvoidactionPerformed ActionEvente System exit 0 73 监听者类 某个类可以兼职也可以专职做这件事 实现监听者接口 一个类若实现一个接口 必须实现接口的全部方法 例如 ActionListener接口只有一个方法 voidactionPerformed ActionEvente 实现接口的类可以是 一般类内部类匿名类 74 事件处理有关问题 有哪些事件类 java awt event 每个事件类的监听者接口 每个监听者接口规定的方法 多方法的监听者接口的适配器 实现接口的抽象类 是什么 组件的事件委托 注册 方法 75 窗口事件 关闭窗口框时引发WindowEvent事件委托addWindowListener newWclose 定义监听者类classWcloseimplementsWindowListener publicvoidwindowClosing WindowEvente System exit 0 WindowListener类有7个方法 必须都实现WindowAdapter接收窗口事件的抽象适配器类 用空内容实现了WindowListener接口的所有方法classWcloseextendsWindowAdapter 76 ActionEvent动作事件 引发原因 单击按扭 双击列表框中选项 选择菜单项 文本框中的回车事件监听接口 ActionListener接口方法 actionPerformed ActionEvente 组件注册该事件方法 addActionListener 监听者 77 TextEvent文本事件 引发原因 文本框或文本区域内容改变事件监听接口 TextListener接口方法 textValueChanged TextEvente 组件注册该事件方法 addTextListener 监听者 78 ItemEvent选择事件 引发原因 改变列表框中的选中项改变复选框选中状态改变下拉选单的选中项事件监听接口 ItemListener接口方法 itemStateChanged ItemEvente 组件注册该事件方法 addItemListener 监听者 79 AdjustmentEvent调整事件 引发原因 操作滚动条改变滑块位置事件监听接口 AdjustmentListener接口方法 adjustmentValueChanged AdjustmentEvente 组件注册该事件方法 addAdjustmentListener 监听者 80 KeyEvent事件 引发原因 敲完键 KEY TYPED 按下键 KEY PRESSED 释放键 KEY RELEASE 事件监听接口 KeyListener接口方法 keyPressed KeyEvente 键已被按下时调用keyReleased KeyEvente 键已被释放时调用keyTyped KeyEvente 键已被敲完时调用KeyEvent方法 charch e getKeyChar 事件监听适配器 抽象类 KeyAdapter组件注册该事件方法 addKeyListener 监听者 81 MouseEvent事件 引发原因 鼠标作用在一个组件上 鼠标事件 鼠标键按下 鼠标键抬起 单击鼠标 鼠标光标进入一个组件 鼠标光标离开一个组件 鼠标移动事件 鼠标移动 鼠标拖动鼠标事件监听接口1 MouseListener接受鼠标事件该接口方法 mouseClicked MouseEvente mouseEntered MouseEvente 鼠标光标进入一个组件mouseExited MouseEvente 鼠标光标离开一个组件 82 MouseEvent事件 续 鼠标事件监听适配器 抽象类 MouseAdapter鼠标事件监听接口2 MouseMotionListener接受鼠标移动事件该接口方法 mouseMoved MouseEvente 鼠标光标在组件上移动mouseDragged MouseEvente 用鼠标拖动一个组件鼠标移动事件监听适配器MouseMotionAdapter组件注册鼠标事件方法 addMouseListener 监听者 组件注册鼠标移动事件方法 addMouseMotionListener 监听者 83 MouseEvent事件 续 MouseEvent方法e getClickCount 1单击 2双击Pointe getPoint 取鼠标光标位置inte getX inte getY 取鼠标光标位置e getModifiers e BUTTON1 MASK鼠标左键 e BUTTON3 MASK鼠标右键 84 WindowEvent事件 引发原因 有关窗口操作引发的事件事件监听接口WindowListener接口方法windowActivated WindowEvente 激活窗口windowClosed WindowEvente 调用dispose方法关闭窗口后windowClosing WindowEvente 窗口正在被关闭 试图利用窗口关闭按钮关闭窗口 windowDeactivated WindowEvente 本窗口成为非活动窗口 85 WindowEvent事件 续 windowDeiconified WindowEvente 窗口从最小化恢复为普通窗口windowIconified WindowEvente 窗口变为最小化图标windowOpened WindowEvente 窗口被打开成为可见时接口适配器WindowAdapter注册事件方法addWindowListener 86 FocusEvent事件 引发原因 组件获得焦点组件失去焦点事件监听接口FocusListener接口方法 focusGained FocusEvente 组件获得焦点时调用focusLost FocusEvente 组件失去焦点时调用接口适配器 FocusAdapter组件注册该事件方法 addFocusListener 87 TextEvent事件 引发原因 当组件 如文本框 文本改变时引发事件监听接口 TextListener接口方法 textValueChanged TextEvente 组件注册该事件方法 addTextListener 88 ComponentEvent事件 引发原因 当组件移动 改变大小 改变可见性时引发事件监听接口 ComponentListener接口方法 componentHidden ComponentEvente 组件隐藏componentMoved ComponentEvente 组件移动componentResized ComponentEvente 组件改变大小componentShown ComponentEvente 组件变为可见接口适配器ComponentAdapter组件注册该事件方法 addComponentListener 89 ContainerEvent事件 引发原因 当容器内增加或移走组件时引发事件监听接口 ContainerListener接口方法componentAdded ContainerEvente 容器内加入组件componentRemoved ContainerEvente 从容器中移走组件接口适配器ContainerAdapter容器注册该事件方法 addContainerListener 90 GUI标准组件 Label 标签 构造方法Labelmyl newLabel 标签内容 Labela newLabel information Labela newLabel information Label CENTER 方法a setText 新内容 设置标签内容Stringa getText 读取标签内容Button 按钮 ButtonmyB1 newButton ButtonmyB2 newButton Cancel 91 GUI标准组件 Checkbox 检测盒 创建时指定检测盒的标签Checkboxcb1 newCheckbox Checkboxcb2 newCheckbox registered Checkboxcb3 newCheckbox registered true Checkboxcb4 newCheckbox registered true group 获取和设置检测盒的状态cb setState true booleanb cb getState 92 Checkbox组件 构造方法Checkbox Stringlabel Checkbox Stringlabel booleanstate Checkbox Stringlabel booleanstate CheckboxGroupgroup 方法 booleangetState setState booleanstate 93 GUI标准组件 CheckboxGroup 单选按钮组 单选按钮组是一组Checkbox的集合 是将一组Checkbox按扭组成单选按扭组件首先创建CheckboxGroup 再加入单个按钮方法 CheckboxgetSelectedCheckbox 取得目前选取的复选框对象setSelectedCheckbox Checkboxbox 设定目前选取的复选框对象 94 CheckboxGroup组件 例 setLayout newGridLayout 3 1 CheckboxGroupcbg newCheckboxGroup Checkboxck1 newCheckbox one true cbg Checkboxck2 newCh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论