




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java图形界面编程 引言 Java使用AWT和Swing类完成图形用户界面编程 其中AWT的全称是抽象窗口集 是sun公司最早提供的GUI库 这个GUI库提供一些基本功能 但这个GUI库的功能比较有限 所以后来又提供了Swing库 程序以一种 搭积木 的方式将这些图形组件组织在一起 就是实际可用的图形用户界面 再通过为组件添加事件 让程序响应用户动作 一 Java图形界面编程 AWT AWT图形界面编程AWT常用组件对话框与菜单布局管理器事件处理AWT绘图拖放功能的实现剪贴板 1 AWT图形界面编程 AWT图形界面编程相关的类都在Java awt包以及子包下两个基类 Component和MenuComponentComponent能以图形方式显示出来 并可与用户交互的对象MenuComponent图形的菜单组件 2 AWT常用组件 用法详见代码示例 CommonComponent java 3 对话框与右键菜单 Dialog就是普通对话框 用法与普通窗口用法完全一样 构造方法Dialog Frameowner Stringtitle booleanmodel 注 owner 及所依赖的父窗口title 标题model 模式与非模式 模式及不点此窗口无法处理父窗口 FileDialog是Dialog类的子类 代表一个文件对话框用于打开或保存文件构造方法FileDialog Frameparent Stringtitle intmode 注 parent与title分别表示父窗口和标题mode用于选择打开或保存文件有两个常量可供选择 FileDialog LOADFileDialog SAVE打开文件保存文件 AWT菜单 示例代码 SimpleMenu java 1 2 其中menuitem构造方法可只传一个标签文本 另可传一个menushortcut设置快捷键例 MenuItemcaitem newMenuItem 打开 newMenuShortcut KeyEvent VK A 3 菜单分隔线两种方法menu对象的addSeparator 方法newMenuItem 4 创建右键功能 示例代码 PopupMenuTest java 步骤 menu menubar menuitem 创建PopupMenu实例 创多个MenuItem加入PopupMenu 将PopupMenu加到目标组件 为该组件添加监听器 4 布局管理器 AWTSwing BoxLayoutFlowLayout 流水布局 示例代码 FlowLayoutTest java三种构造方法FlowLayout 默认构造方法FlowLayout intalign 指定对齐方式FlowLayout intalign inthgap intvgap 指定对齐方式及指定水平 垂直边距注 panel默认使用流水布局BorderLayout 边界布局 示例代码 BorderLayoutTest2 java将容器分为东 南 西 北 中五个区域 FlowLayoutBorderLayoutGridLayoutGriBagLayoutCardLayout 两种构造方法 BorderLayout BorderLayout inthgap intvgap 用法 当增加组件时 应该使用BorderLayout类的几个静态的常量EAST 东 NORTH 北 SOUTH 南 WEST 西 CENTER 中 GridLayout 网格布局 示例代码 GridLayoutTest java两种构造方法 GridLayout introws intcols 指定行数 列数GridLayout introws intcols inthgap intvgap 指定行数列数与横纵边距与流水布局一样添加组件依次从左到右添加绝对布局示例代码 NullLayoutTest java步骤 setLayout null 调用setBounds 方法 设置组件大小 位置setBounds intx inty intwidth intheight X横坐标Y纵坐标width宽height高 BoxLayout示例代码 BoxLayoutTest java1 构造方法BoxLayout Containertarget intaxis 其中axis有两个常量可供选择BoxLayout X AXIS 横向 BoxLayout Y AXIS 纵向 2 BoxLayout通常和Box容器结合使用 该容器默认使用BoxLayout布局Box对象提供两个静态方法createHorizontalBox 水平createVerticalBox 垂直3 横纵间距Box提供Glue strut RigidArea组件来设置间距 CradLayout 卡片布局 示例代码 CardLayoutTest java该布局像卡片将各个组件按添加顺序 叠放到一块 通过5个方法 选取不同的组件显示 5 事件处理 主要涉及3类对象1 EventSource 事件源 2 Event 事件 3 EventListener 事件监听器 事件处理流程 不同事件需要不同的监听器监听 要实现不同的监听器接口 事件适配器实现监听器使用内部类示例代码 MultiListener java使用外部类示例代码 MailerListener java SendMailer java类本身作为事件监听器示例代码 SimpleEventHandler java匿名内部类示例代码 AnonymousEventHandler java 6 AWT绘图 Java开发中 制作小游戏会用到AWT的绘图功能 另外JavaEE项目中 绘制验证码也会用到这部分知识 Component类中的绘图方法 paint Graphicsg 绘制组件外观update Graphicsg 调用paint 方法 刷新组件外观repaint 调用update 方法 刷新组件外观需要重绘组件 直接调用repaint 方法即可 paint 和update 通常被重写来绘制和更新三种方法调用关系如下 使用Graphics类Graphics是一个抽象画笔对象 一个抽象的画笔对象 可在组件上绘制出各种图形 Graphics提供了下面几个方法来绘图注 drawXXX 绘制对应的图形 fillXXX 方法用于填充对应的图形 绘制字符串时有方法setColor setFont 设置画笔颜色与字体 drawImage 用于绘制位图 另外 AWT绘图时需继承Canvas类 并且重写paint方法 位图处理 Graphics提供的drawImage 方法需要Image参数 通过该方法可以绘制出指定的位图Image和BufferedImageBufferedImage intwidth intheight intimageType getGraphics 返回Graphics 使用ImageIO输入输出位图 需要访问磁盘位图文件时 需要利用ImageIO工具类ImageIO并不支持所有格式的图形文件通过read 和write 完成位图文件的读写 7 拖放功能的实现 1 拖放目标构造方法 DropTarget Componentc intops DropTargetlistener ops可选值 继承DropTargetAdapter其中包含5个事件管理器 创建拖放目标 传入拖放监听器 2 拖放源步骤 调用getDefaultDragSource 方法createDefaultDragGestureRecognizer Componentc intactions DragGestureListenerdgl DragGestureListener 重写该接口的GestureRecognized 方法 获得DragSourse对象 将组件转换成拖放源 为监听器提供实现类 8 剪贴板 实际上剪贴板操作与拖放操作有类似之处 他们的差别在于 拖放操作将数据从拖放源直接传递给拖放目标而剪贴板操作则是现将数据传递到剪贴板上 然后从剪贴板传递给目标 AWT提供两种剪贴板 本地剪贴板和系统剪贴板 相关操作的接口和类统一放在Java awt datatransfer传递文本1 创建剪贴板系统剪贴板 Clipboardclipboard Toolkit getfaultToolkit getSystemClipboard 创建本地剪贴板 Clipboardclipboard newClipboard java 2 将需要放入剪贴板中的字符串封装成StringSelection对象StringSelectionst newStringSelection targetstr 3 放调用剪贴板对象的SetContents 方法将封装的方法放入剪贴板 Clipboard setContents st null 第二个参数是剪贴板的数据的所有者 一般设为null取clipboard getdata DataFlavor StringFlavor 如果没有数据会有异常 所以取数据之前需判断剪贴板有无数据使用剪贴板传递图像系统剪贴板 由于JDK只提供了一个封装字符串的Transferable接口实现类 我们需要自己编写一个imageSelection类 使用方法与文字剪贴操作一样 3 本地剪贴板传递Java对象同样自己编写一个localobjectselection类实现Transferable 并重写该接口三个方法 4 系统剪贴板传递Java对象编写一实现类实现Transferable 重写接口的三个方法 并需持有一个序列化对象 二 Java图形界面编程 SWING 概述顶级容器中间容器常用组件 1 概述 Java开发图形界面 大多数情况下使用Swing 很少使用AWTSwing是100 java实现 不再依赖本地GUI 可在不同的平台保持相同的外观 不会产生平台相关的BUG 并且有能力显示本地平台不支持的显示外观Swing提供的图形组件数量远远超过AWTSwing组件采用MVC的设计模式 Swing组件层次 AWT组件的Swing实现Swing为除了Canvas组件之外的所有AWT组件的实现 并且功能更加强大 相对于AWT的额外功能 可以为Swing组件设置提示信息ToolTipDemo java很多组件除了用文字修饰自己之外 还可以使用图片 如 按钮 标签 菜单项CompIcon java支持插拔式外观风格LAndF java支持设置边框BorderDemo java所有Swing组件默认启动双缓冲机制 2 顶层容器 包含JWindow JDialog JFrame JApplet常用的是JDialog JFrame JappletJFrame 框架 表示主程序的窗口JDialog 对话框 每一个JDialog对象表示一个对话框 是二级窗口JApplet 小程序 在浏览器页面上显示 3 中间容器 可以包含其他组件的组件 如 一般容器JMenuBar JToolBar JPanel JScrollPane等 特殊容器JTabbedPane JSplitPane JLayeredPane JDesktopPane和JInternalFrame等JToolBar创建工具条在创建时可以指定的参数 name 名称 orientation 方向 常用方法 JButtonadd Actiona 添加工具按钮voidaddSeparate Dimensions 添加分隔符voidsetFloatable booleanb 设置是否可拖动voidsetMargin Insetsm 设置外边距voidsetOrientation into 设置工具条方向voidsetRollover booleanr 设置rollover状态JToolBarTest javaJMenuBarJMenuBarTest java JPanelJPanelTest java是一般容器 是面板容器 可加到JFrame中JScrollPaneJScrollPaneTest java实现可滚动面板JSplitPaneSplitPaneTest java用于创建一个分隔面板 可将一个组件 通常是容器 分隔为两部分 提供分隔条 用户可以拖动该分隔条来调整两部分大小JTabbedPaneJTabbedPaneTest java可以在窗口上放置多个标签页 每个标签页相当于获得了一个与外部容器具有相同大小的组件摆放区域 用法 1 调用构造器 构造器包含两个参数 tabPlacement 指定标签页标题的放置位置tabLayoutPolicy 指定标签页标题的布局策略2 调用addTab insertTab setComponentAt removeTabAt 方法来增加 插入 修改 删除标签页3 调用setSelectedIndex 方法来实现标签页的显示4 常用方法控制其他属性 JLayeredPaneJLayeredPaneTest java是一个有层次深度的容器 允许组件在需要时互相重叠 在添加组件时 需要为该组件指定一个深度索引 其中层次索引交高的层里的组件位于其他的组件之上 可以使用moveToFront moveToBack setPosition 方法在组件所在层对其重定位 使用setLayer 更改组件的所属层 JDesktopPane和JInternalFrameJInternalFrameTest javaJDesktopPane需要和JInternalFrame结合使用 JDesktopPane代表一个虚拟桌面 JInternalFrame用于创建内部窗口 用法 1 创建一个JDesktopPane对象 2 使用JInternalFrame创建一个内部窗口 3 在内部窗口中添加组件并显示 与一般窗口用法一样4 将内部窗口添加到JDesktopPane 再将JDesktopPane添加到其他容器 4 常用组件 包括JButton JMenu JLabel JToolTipDemo JList JTable JTree JColorChooser JFileChooser JOptionPane JProgressBar等列表框JList和JComboBox使用步骤 1 创建一个JList或者JComboBox对象2 使用各种方法设置外观3 添加监听4 添加到其他容器显示ListTest java 进度条JProgressBarJProgressBarTest java用法 1 创建一个JProgressBar对象2 调用方法设置属性3 工作进度改变时 调用setValue 方法 还可以调用getPercentComplete 返回完成百分比 getString 返回进度字符串的当前值ProgressMonitor用法与JProgressBar基本相似 ProgressMonitor可以直接创建一个进度对话框ProgressMonitorTest java 使用JTree和TreeModel创建树SimpleTree java实例化创建树时 直接使用构造器创建注意 构造器类型TreeModel的默认实现类是DefaultTreeModel为了用根节点创造树需要创建一个TreeNode对象 其默认实现类DefaultMutableTreeNode通过树对象的setEditable booleanb 传入true时树可编辑添加节点事件addTreeExpansionListener TreeExpansionListanerl 树节点展开 折叠事件addTreeSelectionListener TreeSelectionListenerl 节点选择事件 改变节点外观使用DefaultTreeCellRenderer使用TreeCellRenderer自定义节点外观使用JTable和TableModel创建表格创建表格SimpleTable java直接使用构造器 JTable可以将一个二维数据包装为一个表格 二维数据可以是二维数组 Vector 使用TableModel保存数据DefaultTableModel是Swing提供的默认的表格模型继承抽象类AbstractTableModel实现自定义的表格模型利用TableColumnModel实现对数据列的操作注意 实现排序 通过创建一个SortableTableModel实现类 可以将原TableModel包装起来 实现指定列排序的功能使用TableCellRenderer绘制单元格 默认实现类 DefaultTableCellRenderer 可以绘制Icon Boolean Object三种类型的值编辑单元格内容 JColorChooser用于创建颜色选择对话框 主要提供了两个方法publicstaticJDialogcreateDialog Componenc Stringtitle booleanmodal JColorChooserchooserPane ActionListenerokListener ActionListenercancelListener throwsHeadlessExceptionpublicintshowDialog Componentc StringapproveBtnTextColorinitialColor ColorChooserTest javaJFileChooserFileChooserTest java简单用法 JFileChooserfileChooser newJFileChooser null intresult fileChooser showO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 经济法律基础试题及答案
- 柜员现金管理题库及答案
- 打铁专业知识培训课件
- 2025年威海公务员考试试题及答案
- 2025年北京电工考试题目及答案
- 懒字汉字演变课件
- 2025年胎心监护考试试题及答案
- 情绪小屋课件
- 情景导入课件
- 韩语四十音考试题及答案
- 2025年公证处聘用制书记员招聘考试要点及面试模拟题解析
- 2025江西吉安庐陵新区招聘社区工作者(专职网格员)招聘22人考试参考试题及答案解析
- 2025-2026学年广美版(2024)小学美术二年级上册教学计划及进度表
- 2025年手电筒行业研究报告及未来行业发展趋势预测
- 设备使用与保养培训课件
- 酒店客户服务质量提升培训课件
- GB/T 9258.2-2025涂附磨具用磨料粒度组成的检测和标记第2部分:粗磨粒P12~P220
- 2025山西太原西山生态文旅投资建设有限公司及子公司招聘13人笔试参考题库附带答案详解
- 2025 年小升初吕梁市初一新生分班考试语文试卷(带答案解析)-(部编版)
- 2025秋全体教师大会上,德育副校长讲话:德为根,安为本,心为灯,家为桥-这场开学讲话,句句都是育人的方向
- 2025年政工师考试试题及参考答案
评论
0/150
提交评论