Java图形界面设计.ppt

上传人:max****ui 文档编号:6359933 上传时间:2020-02-23 格式:PPT 页数:92 大小:2MB
返回 下载 相关 举报
Java图形界面设计.ppt_第1页
第1页 / 共92页
Java图形界面设计.ppt_第2页
第2页 / 共92页
Java图形界面设计.ppt_第3页
第3页 / 共92页
点击查看更多>>
资源描述
第12章图形界面设计 2 本章主要内容 12 1图形用户界面设计12 2图形用户界面工具包 Swing12 3创建组件12 4布局管理器 3 12 1图形用户界面设计 图形用户界面 GraphicsUserInterface GUI 用图形的方式 借助菜单 按钮等标准界面元素和鼠标操作 帮助用户方便地向计算机系统发出指令 启动操作 并将系统运行的结果同样以图形方式显示给用户的技术 Java的GUI程序设计是Java程序设计的基础 4 12 1图形用户界面设计 Java提供的两个处理图形用户界面的类库 Java awt包和javax swing包 Sun已经提供了一个跨平台GUI开发工具包java awt 抽象窗口工具箱 Sun又开发了一个新的GUI开发工具包javax swing解决了awt中存在的本地化问题 5 12 1图形用户界面设计 AWT和Swing是Java设计GUI用户界面的基础 与AWT的重量级组件不同 Swing中大部分是轻量级组件 正是这个原因 Swing几乎无所不能 不但有各式各样先进的组件 而且更为美观易用 所以一开始使用AWT的程序员很快就转向使用Swing了 但是因为Swing是架构在AWT之上的 没有AWT就没有Swing 所以程序员可以根据自己的习惯选择使用AWT或者是Swing 但是 最好不要二者混用 除开显示风格不同不说 还很可能造成层次 Z Order 错乱 6 12 2图形用户界面工具包 Swing Java图形用户界面的基本元素包括 用户界面组件 组件类 事件处理模块 事件类 图形和图像工具 图形类 图像类 布局管理器 布局类 它们主要都在javax swing包中 Swing是Java包的一部分 7 8 12 2 1Swing组件分类 组件 构成图形用户界面的各种元素 构建图形用户界面的类可以分成三组 容器类 containerclass 辅助类 helperclass 组件类 componentclass 9 12 2 1Swing组件分类 容器类容器类组件中可以包含其他组件 也可以包含其他容器 容器又分为两种 顶层容器和非顶层容器 顶层容器是可以独立的窗口 Swing的顶层容器有JFrame JApplet和JDialog等 非顶层容器 不是独立的窗口 它们必须位于窗口之内 非顶层容器包括JPanel及JScrollPanel等 10 12 2 1Swing组件分类 辅助类和组件类都属于非容器类组件不能包含其他组件的组件 其种类较多 辅助类辅助类是用来描述组件属性的 辅助类通常包含在java awt包中 Swing组件不能取代AWT的全部类 只能替代AWT的GUI组件类 AWT辅助类保持不变 组件类所有SwingGUI组件类 除JFrame JApplet和JDialog 都是JComponent类的子类 例如 JButton JTextField JTextArea JComboBox JList JRadioButton和JMenu等 Swing轻型组件分类参见教材P202表12 1 11 12 2 1Swing组件分类 一般独立应用程序主要是要框架JFrame作为容器 在JFrame上通过放置JPanel面板来控制图形界面的布局 如果应用到浏览器中 则主要使用JApplet来做容器 JApplet是一个能够嵌入到浏览器中运行的特殊容器 12 12 2 1Swing组件分类 1 Swing容器的层次关系一般的Swing窗口 实际上包含几个 层次 13 12 2 1Swing组件分类 1 Swing容器的层次关系一般的Swing窗口 实际上包含几个 层次 各个层的关系如教材P202图12 2所示 顶层容器 是一个窗口容器对象 该对象包含了Swing窗口的各个层次 在该对象里面可以加入其它窗口对象 根窗格 是在创建顶层容器后自动创建的 供Swing顶层容器在后台使用 是顶层容器中做包含的最内层 通常无法在这一层上做任何操作与处理 分层窗格 加入分层窗格中的组件可以设置其图层层次 且不会被内容窗格中的对象屏蔽 是其它窗格的父级 14 12 2 1Swing组件分类 菜单栏 菜单栏被添加到分层窗格的顶部 是可选的 内容窗格 是分层窗格中的某一层 是一个JPanel对象 在窗体中起着工作区的作用 可以放置大部分的可见组件 玻璃窗格 主要用来产生绘图效果 以及用来触发窗口程序的各种事件 玻璃窗格浮在最上面 默认情况下是隐藏的 15 12 2 1Swing组件分类 16 12 2 1Swing组件分类 2 框架类JFrame是Java应用程序的顶层容器 JFrame是java awt Frame的扩展版本 是一个window子类 在使用Swing类库实现用户图形接口 必须继承该类 JFrame容器包括窗口标题 窗口外观 窗口边界 调整窗口大小的图标 关闭和最小化窗口的图标 并且可以直接在容器上添加组件 如按钮 文本等 17 12 2 1Swing组件分类 构造方法 publicJFrame throwsHeadlessException 创建了一个新的容器窗口 默认该窗口是不可见的 publicJFrame Stringtitle throwsHeadlessException创建一个新的容器窗口 通过方法的参数设置窗口标题 该窗口默认是不可见的 18 12 2 1Swing组件分类 该类的常用方法 P203 204 getContentPane 该方法返回一个框架对象 使用该框架对象来添加组件 如增加按钮 菜单 工具栏 列表框等组件 setSize intwidth inthight 设置窗口尺寸 窗口大小以像素为单位计算 getJMenuBar 返回此窗体上设置的菜单栏 setJMenuBar JMenuBarmenubar 设置此窗体的菜单栏 setIconImage Imageimage 设置要作为此窗口图标显示的图像 19 例App12 1 辅助类 组件类 20 例App12 1 为什么在该实例中被没有显示背景色 JFrame默认采用了FlowLayout布局管理器 你的组件在该布局管理器中被塞满整个frame 挡住了背景 就是说 实际上JFrame还是有背景的一般用JFrame的时候要初始化一个JPanel 把组件放在JPanel里 然后把JPanel放到JFrame里 这样可以较好的控制组建位置等其他的东西 在这种方式下直接给JPanel设置setBackground就可以一直看到背景了 命令提示符环境 21 例App12 1 1 22 例App12 1 1 例App12 1 2 23 12 2 1Swing组件分类 3 面板类JPanel面板是一种没有标题栏 没有边框的中间层容器 在该容器上可以放置其他组件如单选按钮 列表框等 还可以包含其他容器 如一个新的JPanel对象 从而方便地实现容器的嵌套 在面板创建后是无法单独显示的 面板不是顶层容器 必须放到其他容器内 也可以放入另一个面板内 必须放在JFrame或Applet这样的顶层窗口中才可以显示 一个界面只可以有一个JFrame窗体组件 但可以有多个JPanel面板组件 24 12 2 1Swing组件分类 3 面板类JPanel该类的构造函数 JPanel 创建一个面板 并且该面板组件的布局管理器为FlowLayout JPanel LayoutManagerlayout 创建一个面板 且该面板设置了指定的布局管理器 布局管理器管理在容器上放置的组件 具体的内容会在12 4节详细介绍 25 12 2 1Swing组件分类 3 面板类JPanel常用方法 JPanel默认的布局管理器是FlowLayout 可以使用setLayout 方法改变其默认布局 也可以采用包含它的容器不同的布局管理器 26 例App12 2 在框架中加入面板 27 例App12 2 在框架中加入面板 28 例App12 2 在框架中加入面板 29 12 2 1Swing组件分类 4 组件类又称控制组件 控件 它里面不能包含其他组件 作用 完成与用户的交互 包括接收用户的命令 接收用户输入的文本或用户的选择 向用户显示文本或图形 常用控件 命令类 选择类 文字处理类等 30 12 2 1Swing组件分类 5 图形界面设计的步骤创建组件 Component 创建组成界面的各种元素 如按钮 文本框等 指定布局 Layout 根据具体需要排列界面上各元素的位置关系 响应事件 Event 定义图形用户界面的事件和各界面元素对不同事件的响应 从而实现图形用户界面与用户的交互功能 31 12 2 2颜色类 字体类 图像图标类 1 颜色类Color属于java awt每种颜色均看作是由红 R 绿 G 蓝 B 三色组成 构造方法 Color intr intg intb 颜色常量值Color black Color blue Color gray Color redColor white例如Colorc newColor intrgb 参数取值0 255 越大则表明这种颜色的成分越重 32 12 2 2颜色类 字体类 图像图标类 2 字体类Font用来规范组件所用的字体样式 大小与字形等 构造方法 Font Stringfont name intstyle intsize 字体名称 字形样式 PLAIN BOLD ITALIC 字号大小 33 Font类的成员方法publicstringgetName 获得字体的名称publicintgetStyle 获得字体的样式publicintgetSize 获得字体的大小publicbooleanisPlain 若字体是正常型 则返回truepublicbooleanisBold 若字体是粗体 则返回truepublicbooleanisItalic 若字体是斜体 则返回true 12 2 2颜色类 字体类 图像图标类 34 12 2 2颜色类 字体类 图像图标类 3 图标图像类ImageIconJava语言使用javax swing ImageIcon类表示图标 表12 12给出了ImageIcon类的常用构造方法 表12 13给出了ImageIcon类的常用方法 35 Java中Image类与ImageIcon类的区别 Image类一般尺寸过大 不适合作ImageIcon类 ImageIconimageIcon newImageIcon duke gif Icon由图片文件形成Imageimage imageIcon getImage 但这个图片太大不适合做Icon 为把它缩小点 先要取出这个Icon的image 然后缩放到合适的大小ImagesmallImage image getScaledInstance 30 20 Image SCALE FAST 再由修改后的Image来生成合适的IconImageIconsmallIcon newImageIcon smallImage 最后设置它为按钮的图片JButtoniconButton newJButton smallIcon 36 Java中Image类与ImageIcon类的区别 而由ImageIcon类到Image类 可以通过 ImageIconimageIcon newImageIcon duke gif Icon由图片文件形成JFramejf null jf setImageIcon ImageIcon getImage 37 12 3创建组件 12 3 1标签12 3 2命令按钮 复选框 单选按钮12 3 3文本编辑组件 滚动窗格12 3 4选项窗格 38 12 3 1标签JLabel 标签用来在窗口中显示文字的控件在整个应用程序中 不仅把JLabel用作文本描述 还将它用作图片描述 每当在Swing应用程序中看到图片的时候 它就有可能是JLabel JLabel对于Swing初学者来说没有许多意料之外的方法 39 12 3 1标签JLabel 基本的方法get setText 获取 设置标签的文本 get seticon 获取 设置标签的图片 get setHorizontalAlignment 获取 设置文本的水平位置 get setVerticalAlignment 获取 设置文本的垂直位置 get setDisplayedMnemonic 获取 设置标签的访问键 下划线文字 get setLableFor 获取 设置这个标签附着的组件 所以当用户按下Alt 访问键时 焦点转移到指定的组件 40 例App12 3 41 例App12 3 42 例App12 3 43 例App12 4 在框架窗口中加入指定大小的标签 并设置当鼠标悬停在标签上时给出相应的提示信息 Swing中的几乎所有组件都是继承自JComponent 它提供了一个setToolTipText Stringstr 方法 来创建工具提示 44 例App12 4 45 例App12 4 46 12 3 2命令按钮 复选框 单选按钮 1 命令按钮Jbutton用户用鼠标单击它来控制程序运行的流程 JButton创建后通过容器的add 将其放入容器 构造方法及常用方法见教材P212 213表12 16 12 17 47 例App12 5 48 例App12 5 49 12 3 2命令按钮 复选框 单选按钮 2 复选框JCheckBox 单选按钮JbuttonJCheckBox可以单独使用 而单选按钮必须配合javax swing包中的ButtonGroup类将其组成单选按钮组来使用 如果有多个复选框 那么也需要ButtonGroup类将其组成复选框按钮组来使用 重要的ButtonGroup方法是 add 添加JCheckBox或JRadioButton到ButtonGroup getElements 获得ButtonGroup中的全部组件 允许对它们进行迭代 找到其中选中的那个 50 例App12 6 51 例App12 6 注意 ButtonGroup不是java awt Component的子类 所以不能添加到容器中 52 例App12 6 53 例App12 6 54 12 3 3文本编辑组件与滚动窗格 1 文本行组件JTextField文本行组件JTextField主要用于接收用户键盘输入的文本 设置文本的方法 get setText 用于获取 设置JTextField中的文本 55 12 3 3文本编辑组件与滚动窗格 2 密码文本行组件JPasswordFieldPasswordField主要用于输入密码getEchoChar 获取每次字符输入时在JPasswordField中显示的字符 默认值为 setEchoChar 设置每次字符输入时在JPasswordField中显示的字符 getPassword 这是从JPasswordField中获得口令的恰当方法 因为它返回一个包含口令的char 为了保证恰当的安全性 数组应当被清为0 以确保它不会保留在内存中 56 12 3 3文本编辑组件与滚动窗格 3 文本区组件JTextAreais setLineWrap 设置在行过长的时候是否要自动换行 is setWrapStyleWord 设置在单词过长的时候是否要把长单词移到下一行 文本区组件JTextArea通常与滚动窗格组件JScrollPane一起使用 4 滚动窗格组件JScrollPane用JTextArea调用JScrollPane的构造函数 这为JTextArea创建了在文本过长时滚动的能力 JScrollPanescroll newJScrollPane getTextArea add scroll 57 例App12 7 58 例App12 7 59 例App12 7 60 12 3 4选项窗格JTabbedPane JTabbedPane组件中允许包含多个选项卡 用户选取项目的一种组件 用户利用该组件来表JTabbedPane类的构造方法及常用方法见教材中表12 25 12 26例如 JTabbedPanetab newJTabbedPane tab add Java newJLabel Java JTabbedPane类有多个addTab 方法 这里采用了其中一种 第一个参数是页签的标题 第二个参数是页签上放置的组件 如JLabel 当然可以是任意的组件 61 例App12 8 62 例App12 8 63 例App12 8 64 12 4布局管理器 布局管理即页面管理 页面管理 layout 指窗口上的组件遵循一定的规则来排列 并会随着窗口大小的变化来改变组件大小与位置的一种布局方式 自动布局 当为一个容器指定一个布局管理器后 将一个组件加入该容器中时 布局管理器就能自动设置该组件的大小和位置 65 12 4布局管理器 java awt包中共定义了五种布局管理器 每个布局管理器对应一种布局策略 分别是 流式布局管理器FlowLayout边界式布局管理器BorderLayout卡片式布局管理器CardLayout网格式布局管理器GridLayout网格包布局管理器GridBagLayout 66 12 4布局管理器 java Swing包提供的布局管理器有 盒式布局管理器BoxLayout重叠布局管理器OverlayLayout弹簧布局管理器SpringLayout 67 12 4 1流式布局管理器FlowLayout 布局策略组件按照加入容器的先后顺序从左向右排列 一行排满后就自动地转到下一行继续从左向右排列 每一行中的组件都居中排列 默认居中对齐 可以通过FlowLayout intalign 方法指定对齐方式 68 12 4 1流式布局管理器FlowLayout FlowLayout布局管理器是Panel Applet和JPanel默认的布局管理方式 布局管理器的容器中的组件大小不随容器大小的变化而改变 当容器中的组件不多时 使用这种布局策略非常方便 是JPanel默认的布局管理方式 构造方法及常用方法见教材表12 27 12 29见教材例12 9 69 例App12 9 70 例App12 9 71 12 4 2边界式布局管理器BorderLayout 将显示区域按地理方位分为东 East 西 West 南 South 北 North 中 Center 五个区域 将组件加入容器中 若没有指定区域 则默认为中间 若将组件加入到已被占用的位置 将会取代原先的组件 72 12 4 2边界式布局管理器BorderLayout 利用add 添加组件时必须指出组件的摆放位置 是JFrame JApplet JDialog默认的布局管理方式 在BorderLayout类的定义中这5个区域用5个常量值表示 EAST WEST SOUTH NORTH和CENTER 假设容器为cp组件为jb 则将组件添加到容器上的方式为 BorderLayoutbl newBorderLayout Cp add jb BorderLayout CENTER 不是五个部分都必须添加中间组件会自动调节大小 73 例App12 10 74 例App12 9 75 12 4 3网格式布局管理器GridLayout 提供的页面布局规则是将容器的空间划分成若干行与列的网格形式 在容器上添加组件时 它们会按从左到右 从上到下的顺序在网格中均匀排列 网格的行数和列数可以在创建GridLayout对象的构造方法里指定 若控件数正好是行 列 则按行 列数放置 若控件数超过了行 列 则先满足行 利用GridLayout布局策略时 容器中各组件的宽度相同 所有组件的高度也相同 当容器尺寸发生变化时 各组件的相对位置不变 构造方法及常用方法见教材表12 33 12 34 76 例App12 11 77 例App12 11 78 例App12 11 79 例App12 11 80 例App12 11 81 12 4 4卡片式布局管理器CardLayout 页面布局方式是把 窗口容器 中的所有组件如同堆叠起来的一付 扑克牌 每次只能显示最上面的一张一样 这个被显示的组件将占据所有的容器空间 使用add 往窗口容器中加入组件时应为每个组件赋予一个名字 依据这个名字利用CardLayout类所提供的方法来控制其他组件是否显示 该布局方式每次仅有一个组件是可见的 利用卡片布局管理器时 通常要用到多个容器 其中一个容器使用卡片布局管理器 而另外的容器使用其它布局管理器 82 例App12 12 83 例App12 12 84 例App12 12 85 12 4 5网格包布局管理器GridBagLayout 将容器中的组件按行 列的位置摆放 但各组件所占据的空间可以是互不相同的 可以为每个组件指定其占据的网格数 可以保留组件原来的大小 可以按任意顺序随意加入容器的任意位置 从而可以真正自由地安排容器中的组件的大小和位置 每个组件都要与一个网格包约束条件的实例对象来配合使用 该实例对象指定组件如何放置在它的显示区域内 86 例App12 13 87 例App12 13 88 例App12 13 89 例App12 13 90 12 4 6盒式布局管理器BoxLayout BoxLayout是一种Swing布局管理器 这种布局策略是在一行或一列中摆放组件 假设容器为jp 设置该容器的盒子布局管理器的方式为 jp setLayout newBoxLayout jp BoxLayout Y AXIS BoxLayout的构造函数要求把欲接受管理器控制的容器对象作为第一个参数 而第二个参数说明了组件的布局方向 91 例App12 14 92 12 4 7重叠布局管理器OverlayLayout和弹簧布局管理器SpringLayout简介 重叠布局管理器OverlayLayout和弹簧布局管理器SpringLayout均是Swing中定义的布局管理器 具有OverlayLayout布局策略的容器 将加入该容器的所有组件叠放在一起 第一个被家人容器的组件会放在容器的最前面 SpringLayout的主要思想是在组件的周围放置一个灵活的弹簧 这种弹簧可以压缩或伸长 把组件堆放到要求的位置
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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