Java上第十章GUI编程之AW.ppt

上传人:max****ui 文档编号:6359387 上传时间:2020-02-23 格式:PPT 页数:70 大小:791KB
返回 下载 相关 举报
Java上第十章GUI编程之AW.ppt_第1页
第1页 / 共70页
Java上第十章GUI编程之AW.ppt_第2页
第2页 / 共70页
Java上第十章GUI编程之AW.ppt_第3页
第3页 / 共70页
点击查看更多>>
资源描述
第十章 GUI编程之AWT 学习目标 能够熟练的创建和管理窗口 管理字体和颜色 输出文本和使用图形 能够熟练的使用AWT中的各种组件 如按扭 文本框以及系统托盘和启动画面等 理解java的事件处理机制 熟练使用事件做出反应灵敏的图形化界面 AWT类的层次结构 Component类 1 Component类是AWT中最上层的根类 所以了解Component类提供的方法对于学习AWT的组件来说是必要的 成员方法 publicColorgetBackground publicvoidsetBackground Colorc publicColorgetForeground publicvoidsetForeground Colorc Component类 2 成员方法 publicFontgetFont publicvoidsetFont Fontf publicFontMetricsgetFontMetrics Fontfont publicDimensiongetSize publicvoidsetSize Dimensiond publicvoidsetSize intwidth intheight Component类 3 成员方法 publicPointgetLocation publicvoidsetLocation intx inty publicRectanglegetBounds publicvoidsetBounds intx inty intw inth publicbooleanisVisible publicvoidsetVisible booleanb publicbooleanisEnabled publicvoidsetEnabled booleanb Component类 4 成员方法 publicvoidpaint Graphicsg publicvoidrepaint publicvoidupdate Graphicsg publicContainergetParent publicCursorgetCursor publicvoidsetCursor Cursorcursor publicToolkitgetToolkit Component类 5 成员方法 publicDimensiongetMaximumSize publicDimensiongetMinimumSize publicDimensiongetPreferredSize publicImagecreateImage intwidth intheight 上述方法是Component类中比较常用的行为 其它方法请参照API文档 Container类 1 Container类是一种特殊的Component 它可以容纳其他的Component 成员方法 publicLayoutManagergetLayout publicvoidsetLayout LayoutManagermgr publicComponentadd Componentcomp publicvoidadd Componentcomp Objectconstraints Container类 2 成员方法 publicvoidremove Componentcomp publicvoidremove intindex publicvoidremoveAll publicvoidvalidate publicComponent getComponents 上述方法是Container类中比较常用的行为 其它方法请参照API文档 Window类 1 Window是AWT的窗口类 它的特点是无标题栏 无边框 无最大最小和关闭按钮 不能在可视化状态下改变其外观 成员方法 publicvoiddispose publicvoidpack publicvoidshow Window类 2 成员方法 publicvoidaddWindowListener WindowListenerl publicvoidremoveWindowListener WindowListenerl 上述方法是Window类中比较常用的行为 其它方法请参照API文档 Frame类 1 Frame是Window的子类 是AWT界面的根窗体 包含标题栏 边框 最大最小和关闭按扭等 默认布局是BorderLayout 构造方法 publicFrame publicFrame Stringtitle Frame类 2 成员方法 publicStringgetTitle publicvoidsetTitle Stringtitle publicbooleanisResizable publicvoidsetResizable booleanresizable publicMenuBargetMenuBar publicvoidsetMenuBar MenuBarmb 其它方法请参照API文档 Label类 1 Label是使用最简单的一种组件 它包含一个它要显示的字符串 成员 publicstaticfinalintLEFTpublicstaticfinalintCENTERpublicstaticfinalintRIGHT Label类 2 构造方法 publicLabel publicLabel Stringtext publicLabel Stringtext intalignment 成员方法 publicStringgetText publicvoidsetText Stringtext Label类 3 成员方法 publicintgetAlignment publicvoidsetAlignment intalignment 其它方法参照API文档 Button类 1 Button是使用最广泛的组件 按钮 它包含一个显示其上的标签 构造方法 publicButton publicButton Stringlabel 成员方法 publicStringgetLabel publicvoidsetLabel Stringlabel Button类 2 成员方法 publicvoidaddActionListener ActionListenerlistener publicvoidremoveActionListener ActionListenerlistener 其它方法参照API文档 布局管理器 1 布局管理器是容器管理其中组件的一种方法 用于在容器内按照一定的顺序来排列组件 AWT中一共有五大布局管理器 1 GridLayout用于将容器平均分配成m行n行 注意 如果添加的组件数量与前面分配的数量有较大差 会导致GridLayout的行列数发生自动修正 布局管理器 2 范例解析 AWTSimple javaimportjava awt publicclassAWTSimple privateFramef privateButtonb1 b2 b3 publicAWTSampl f newFrame AWTSimpletesting b1 newButton A b2 newButton B 布局管理器 3 b3 newButton C f setLayout newGridLayout 3 1 10 10 f add b1 f add b2 f add b3 f setSize 400 300 f setVisible true 布局管理器 3 publicstaticvoidmain String args AWTSimplex newAWTSimple 上述代码能够生成一个简单AWT界面 包含三个按钮 布局管理器 4 2 BorderLayout用于将容器按东南西北中五个方向进行分配 成员 publicstaticfinalStringNORTHpublicstaticfinalStringSOUTHpublicstaticfinalStringWESTpublicstaticfinalStringEASTpublicstaticfinalStringCENTER 布局管理器 5 构造方法 publicBorderLayout publicBorderLayout inthgap intvgap 练习 完成下图 布局管理器 6 3 FlowLayout摆放组件的方式是从按照对齐方式顺序排列 当一行上不再能放下更多的组件时 下一个组件将被摆放在下一行 成员 publicstaticfinalintLEFTpublicstaticfinalintRIGHTpublicstaticfinalintCENTER 布局管理器 7 构造方法 publicFlowLayout publicFlowLayout intalign publicFlowLayout intalign inthgap intvgap 布局管理器 8 4 还有两种布局管理器CardLayout和GridBagLayout不常用 请自行参照API 5 空布局 就是将容器的布局管理器设置为null 对于空布局的容器 添加组件前 必须先指明组件在容器中的起始位置以及大小 然后才能添加到组件中 练习 使用空布局完成一个GUI界面设计 Panel类 Panel是个容器 它可以将容纳其他的容器 Frame除外 和组件 默认布局管理局FlowLayout Panel中可以摆放若干组件 然后将Panel作为一个组件放入底层容器 这样就可以做出各种各样的GUI界面 构造方法 publicPanel publicPanel LayoutManagerlayout 练习 使用Panel类完成GUI界面设计 事件处理 Java中的事件处理模型分成两类 分别是等级事件模型和委托事件模型 在JDK1 1 8之后 java全部采用委托事件模型来处理事件 在委托事件模型的处理机制中 一次典型的事件处理过程涉及三类对象 事件源对象事件对象事件监听器对象 EventObject类 EventObject类是awt中事件类的最上层根类 构造方法 publicEventObject Objectsource 成员方法 publicObjectgetSource 事件类层次关系 监听器层次关系 范例解析 练习 为Button添加事件处理 在完成GUI界面设计后添加如下四步 导入java awt event包 定义监听器对象 对事件源添加监听器 覆盖监听器接口的方法 事件监听器的适配器类 WindowListener接口 成员方法 publicvoidwindowClosing WindowEvente publicvoidwindowActivated WindowEvente publicvoidwindowDeactivated WindowEvente publicvoidwindowIconified WindowEvente publicvoidwindowDeiconified WindowEvente publicvoidwindowOpened WindowEvente publicvoidwindowClosed WindowEvente ComponentListener接口 成员方法 publicvoidcomponentHidden ComponentEvente publicvoidcomponentMoved ComponentEvente publicvoidcomponentResized ComponentEvente publicvoidcomponentShown ComponentEvente ContainerListener接口 成员方法 publicvoidcomponentAdded ContainerEvente publicvoidcomponentRemoved ContainerEvente TextComponent类 1 TextComponent类中定义了AWT中两种文字输入组件共用的一些方法 成员方法 publicStringgetText publicvoidsetText Stringt publicintgetSelectionStart publicvoidsetSelectionStart intselectionStart TextComponent类 2 成员方法 publicintgetSelectionEnd publicvoidsetSelectionEnd intselectionEnd publicStringgetSelectedText publicvoidselect intselectionStart intselectionEnd publicvoidselectAll publicbooleanisEditable publicvoidsetEditable booleanb TextComponent类 3 成员方法 publicvoidaddTextListener TextListenerl publicvoidremoveTextListener TextListenerl TextField类 1 TextField是TextComponent类的子类 实现了一个单行的文本输入区域 通常称为 文本框 构造方法 publicTextField publicTextField Stringtext TextField类 2 成员方法 publicchargetEchoChar publicvoidsetEchoChar charc publicbooleanechoCharIsSet publicvoidaddActionListener ActionListenerl publicvoidremoveActionListener ActionListenerl 练习 完成一个简单加减乘除计算机器 TextArea类 TextArea是多行的 文本区 构造方法 publicTextArea publicTextArea Stringtext 成员方法 publicvoidappend Stringstr publicvoidinsert Stringstr intpos publicvoidreplaceRange Strings intstart intend 复选框和单选按钮 复选框 Checkbox类单选按钮 是将若干Checkbox归为一个组 则同一个组中的Checkbox有互斥关系 练习 完成下图 下拉列表和列表 下拉列表 Choice类 列表 List类 练习 完成下图 对话框Dialog类 1 用户经常会遇到这样的情况 那就是需要使用对话框来容纳一系列相关的组件 对话框主要用于得到用户的输入内容 它们与Frame窗口非常类似 只不过对话框总是顶级窗口的子窗口中 在其他方面 对话框的功能与Frame窗口非常相似 例如 给对话框添加组件的方法就与给Frame窗口添加组件的方法完全一致 对话框Dialog类 2 构造方法 publicDialog Frameowner Stringtitle booleanmodal publicDialog Dialogowner Stringtitle booleanmodal 成员方法 publicStringgetTitle publicvoidsetTitle Stringtitle 对话框Dialog类 3 成员方法 publicbooleanisResizable publicvoidsetResizable booleanresizable publicvoidsetVisible booleanb publicbooleanisModal publicvoidsetModal booleanb 对话框FileDialog类 1 Java提供了内置的文件选择对话框让用户指定文件 要创建一个文件对话框 实例化FileDialog类型的对象 它可以使文件对话框显示出来 成员 publicstaticfinalintLOADpublicstaticfinalintSAVE 对话框FileDialog类 2 构造方法 publicFileDialog Frameparent Stringtitle intmode 成员方法 publicStringgetDirectory publicvoidsetDirectory Stringdir publicStringgetFile publicvoidsetFile Stringfile 对话框FileDialog类 3 成员方法 publicintgetMode publicvoidsetMode intmode publicFilenameFiltergetFilenameFilter publicvoidsetFilenameFilter FilenameFilterfilter 练习 完成对FileDialog类的测试 菜单类层次关系 菜单类组件 菜单栏MenuBar菜单Menu菜单项MenuItem可核选式菜单项CheckboxMenuItem弹出式菜单PopupMenu 菜单组件范例解析 桌面API 1 桌面API有助于无缝地把Java应用程序与桌面集成到一起 主要有三个功能 1 支持Java应用程序使用一个特定的统一资源标识符 URI 启动操作系统的缺省的浏览器 2 启动操作系统缺省的电子邮件客户端 3 启动应用程序以打开 编辑或打印与该应用程序相关联的文件 桌面API 2 练习 使用Desktop类完成三个功能 1 启动浏览器显示一个HTML页 2 启动系统默认的电子邮件客户端 3 启动应用程序以打开 编辑相关文件 系统托盘 1 桌面的系统托盘在MicrosoftWindows上 它被称为 任务栏状态区域 每个Java应用程序都有一个SystemTray实例 在应用程序运行时 它允许应用程序与桌面系统托盘建立连接 TrayIcon对象表示可以添加到系统托盘的托盘图标 TrayIcon可以包含工具提示 图像 弹出菜单和一组与之关联的监听器 系统托盘 2 练习 完成右图中的GUI界面 并为该应用提供系统托盘的功能 要求写两个文件 一个是能够生成系统托盘的工厂类 另一个完成下图的内容 系统启动画面 1 现在很多软件在启动时都有初始化过程 有时初始化的时间会很长 如Photoshop Flash等 为了让用户有耐心继续等待 不要误以为死机了 这些软件在初始化之前总是显示一个图形界面来告诉用户软件正在做什么 这就是 系统启动画面 在JDK1 6中提供了一个简单的方法 可以不添加一行代码 而且在界面要改变时还不需要重新编译源程序 系统启动画面 2 范例解析 importjava awt Frame publicclassTestSplashextendsFrame publicstaticvoidmain String args TestSplashx newTestSplash publicTestSplash try 程序在此位置阻塞3000毫秒Thread sleep 3000 系统启动画面 3 catch InterruptedExceptione e printStackTrace initialize privatevoidinitialize this setSize 300 200 this setTitle testsplash this setVisible true 系统启动画面 4 为了让我们上面的程序在运行时能够显示启动画面 需要为它配置一下启动参数 例如 java splash files start jpgTestSplash 字体和颜色 在AWT中有一些虽然不是组件 但是它们是组件相关的支持类 非常重要 比如组件的颜色 组件上文字的字体等 1 Font代表字体类 2 Color代表颜色类 滚动面板和滚动条 附加 1 ScrollPane代表的组件是滚动面板 当滚动面板中容纳的组件大于滚动面板的外观尺寸时 滚动面板可以出现滚动条用于让用户可以调节面板中显示的内容 2 Scrollbar是滚动条 用来在指定的最小值和最大值之间选择连续数值 3 滚动条能够触发的事件是AdjustmentEvent 低级事件和焦点事件 附加 鼠标事件MouseEvent监听器MouseListener MouseMotionListener键盘事件KeyEvent监听器KeyListener焦点事件FocusEvent监听器FocusListener 控制鼠标指针形状 附加 1 在Component类中有一个setCursor方法用于设置鼠标指针的形状 调用时需要传递一个Cursor对象 控制鼠标指针形状 附加 2 构造方法 publicCursor inttype publicstaticCursorgetPredefinedCursor inttype 练习 写一段程序 实现功能是 当鼠标进入Label区域内时 鼠标形状变成 手 状 小结 本单元详细讲述了图形界面的基础部分 AWT 涉及到十余种组件 除组件相关的方法外 还需要大家掌握的是布局管理器以及颜色 字体等支持类的使用 对于在JDK1 6中出现的系统桌面 系统托盘和启动画面三部分内容 大家应该熟练掌握 事件处理机制是GUI编程中的重点 应该理解事件处理的过程 能够灵活运用 谢谢
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!