java图形用户界面设计.ppt.ppt_第1页
java图形用户界面设计.ppt.ppt_第2页
java图形用户界面设计.ppt.ppt_第3页
java图形用户界面设计.ppt.ppt_第4页
java图形用户界面设计.ppt.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

图形用户界面设计 第11章 2 目标 GUI相关概念布局管理器事件处理常用Swing组件 3 11 1 1GUI包和简单GUI程序2 1 1 java awt包称为抽象窗口工具集AWT AbstractWindowToolkit 是使用Java进行GUI设计的基础 2 javax swing包Swing组件存放在javax swing包中 几乎所有AWT组件对应有新功能更强的Swing组件 另外还加入了一些全新的组件 Swing组件在名称上前面多了一个字母 J 4 11 1 1GUI包和简单GUI程序2 2 3 设置GUI应用程序的流程 1 引用需要的包和类 2 设置一个顶层的容器 3 根据需要为容器设置布局管理器或使用默认布局管理器 4 将组件添加到容器内 位置自行设计 5 为响应事件的组件编写事件处理代码 5 11 1 2容器 组件 布局和观感 1 容器和组件组件是可以用图形化的方式显示在屏幕上并能够与用户进行交互的对象 容器是一种特殊的组件 一种能够容纳其他组件或容器的组件 2 布局管理器为了使图形用户界面具有良好的平台无关性 提供了专门用来管理组件在容器中的布局的工具 3 观感决定swing应用程序的外观 6 11 2布局管理器 Java中的布局类型包括以下几种 FlowLayout 流式布局 BorderLayout 边界布局 GridLayout 网格布局 CardLayout 卡片布局 GridBagLayout 网格包布局 7 11 2 1FlowLayout布局管理器 FlowLayout的构造函数有 FlowLayout 生成一个默认的流式布局FlowLayout intalignment 可以设定每一行组件的对齐方式FlowLayout intalignment inthorz intvert 可以设定组件间的水平和垂直距离Applet和面板的缺省布局组件从左上角开始按从左到右 从上到下的方式排列 FlowLayoutmylayout newFlowLayout FlowLayoutexLayout newFlowLayout FlowLayout RIGHT setLayout exlayout 为容器设置新布局 8 11 2 2BorderLayout布局管理器 下面是BorderLayout所定义的构造函数 BorderLayout 生成默认的边界布局 BorderLayout inthorz intvert 可以设定组件间的水平和垂直距离窗口 框架和对话框等的缺省布局组件被置于容器的北 南 东 西或中间位置 setLayout newBorderLayout ButtonbtnEast newButton 东 ButtonbtnWest newButton 西 ButtonbtnNorth newButton 北 ButtonbtnSouth newButton 南 ButtonbtnCenter newButton 中 add btnEast BorderLayout EAST add btnWest BorderLayout WEST add btnNorth BorderLayout NORTH add btnSouth BorderLayout SOUTH add btnCenter BorderLayout CENTER 9 11 2 3GridLayout布局管理器 GridLayout的构造函数如下所示 GridLayout 生成一个单列的网格布局 GridLayout introw intcol 生成一个设定行数和列数的网格布局 GridLayout introw intcol inthorz intvert 可以设置组件之间的水平和垂直间隔用于将容器区域划分为一个矩形网格组件按行和列排列 Buttonbtn 声明按钮数组Stringstr 1 2 3 4 5 6 7 8 9 setLayout newGridLayout 3 3 btn newButton str length 创建按钮数组for inti 0 i str length i btn i newButton str i add btn i 10 11 2 4CardLayout布局管理器 可存储几个不同的布局 每个布局就像是一个卡片组中的一张卡片 在一个给定的时间总会有一张卡片在顶层 卡片通常为一个Panel对象 每当需要许多面板切换 而每个面板需要显示为不同布局时 可以使用卡片布局 11 11 2 5GridBagLayout布局管理器 通过使用以下语法容器可获得GridBagLayout GridBagLayoutgb newGridBagLayout ContainerName setLayout gb 要使用此布局 必须提供各组件的大小和布局等信息 GridBagConstraints类中包含GridBagLayout类用来定位及调整组件大小所需的全部信息 组件大小不必相同组件按行和列排列放置顺序不一定为从左至右和由上至下 12 GridBagConstraints类2 1 成员变量列表 gridx gridy 指定组件放置于哪个单元中gridwidth gridheight 指定组件将占用多少行和多少列weightx weighty 指定在一个GridBagLayout中应如何分配空间 这些变量的缺省值为0ipadx ipady 指定组件的最小高度和宽度 13 成员变量列表 fill 指定在单元大于组件的情况下 组件如何填充此单元 共有4可选值 缺省值为 GridBagConstraints NONEanchor 指定将组件放置在单元中的位置 共有9个可选值 缺省值为 GridBagConstraints CENTER GridBagConstraints类2 2 14 11 2 6swing布局管理器 1 BoxLayout布局管理器按照从上到下 即Y轴 或者从左到右 即X轴 的顺序来依次排列组件 2 ScrollPaneLayout布局管理器是JScrollPane中的内置布局管理器 所以不需要单独创建 会自动设置 15 11 2 7Null布局管理器 在某些情况下 用户不想使用布局管理器 需要自己设置组件的位置和大小 这时应取消容器的布局管理器 然后再进行设置 否则用户自定义设置将会被布局管理器覆盖 取消布局管理器的方法是 setLayout null 用户使用setLocation setSize setBounds 等方法为组件设置位置和大小 需要注意的是 这种方法会导致程序与系统相关 如不同的分辨率会产生不同的效果 16 11 3 1事件处理模型 Java最新的事件处理方法是基于授权事件模型当事件来源对象因用户的操作 鼠标或键盘 系统会自动触发此事件类对象E 并通知所授权的事件监听者A 若来源对象已向A注册 事件监听者A中有处理各种事件的方法 事件处理者1 n 便会处理此事件E的各种状况 17 11 3 2事件层次结构2 1 18 11 3 2事件层次结构2 2 19 11 3 3事件处理方法 实现事件监听器接口法 首先给组件注册监听器 使用下列方法 addxxxListener 事件监听器对象 确定了事件监听器的类型后 必须在程序中定义类来实现这些接口 重写接口中的所有方法 addKeyListener newCharType publicclassCharTypeimplementsKeyListener publicvoidkeyPressed KeyEvente 大括号中为处理事件的代码publicvoidkeyReleased KeyEvente 未用到此方法 所以方法体为空publicvoidkeyTyped KeyEvente 20 11 3 4事件适配器 使用实现事件监听器接口的方法处理事件时 必须重写监听器接口中的所有方法 尽管有些方法不会用到 继承事件适配器类 只需要重写所需要的方法即可 addKeyListener newCharType 为事件源注册事件监听器的方法同上 publicclassCharTypeextendsKeyAdapter publicvoidkeyPressed KeyEvente 大括号中为处理事件的代码 21 11 4 1常用容器组件3 1 是放置其他Swing组件的顶级容器JFrame组件用于在Swing程序中创建窗体它的构造函数 JFrame JFrame StringTitle 组件必须添加至内容窗格 而不是直接添加至JFrame对象 示例 frame getContentPane add b 22 11 4 1常用容器组件3 2 JPanel组件是一个中间容器用于将小型的轻量级组件组合在一起JPanel的缺省布局为FlowLayoutJPanel具有下列构造函数 JPanel JPanel LayoutManagerlm 23 11 4 1常用容器组件3 3 JApplet也是一种窗口容器 继承自Applet类 Applet小程序是另一种Java程序 与Applet不同的是 它默认的布局管理器是JAppletBorderLayout 而Applet默认的布局管理器是FlowLayout 可直接向Applet窗口中添加组件 但JApplet不行 添加组件时必须添加到其内容窗格中 得到内容窗格使用方法 getContentPane 24 11 4 2标签 JLabel 它既可以显示文本也可以显示图像构造函数如下 JLabel Iconicon icon表示使用的图标JLabel Stringtext Iconicon intalign text表示使用的字符串 icon表示使用的图标 align表示水平对齐方式 其值可以为 LEFT RIGHT CENTER 其它常用方法getText setText Stringtext 25 11 4 3按钮 JButton 可以使用以下任一构造函数来创建按钮 JButton 新建一个空的按钮JButton Iconicon JButton Stringtext JButton Stringtext Iconicon JButtonbtnOk newJButton 确定 JButtonbtnCancel newJButton 取消 getContentPane add btnOk getContentPane add btnCancel 26 11 4 4文本框 JTextField JTextField组件允许输入或编辑单行文本此类的构造函数包括 JTextField JTextField Documentdoc Stringtext intcolumns JTextField intcolumns JTextField Stringtext JTextField Stringtext intcolumns Containercon getContentPane con setLayout newFlowLayout JLabeljl newJLabel 文本域 con add jl JTextFieldtf newJTextField 20 con add tf 27 11 4 4文本框 JPasswordField JPasswordField组件允许输入或编辑单行文本 并且文本被其他字符代替 此类的构造函数与单行文本框类似 其它方法 char getPassword chargetEchoChar voidsetEchoChar charc 28 11 4 4文本框 JTextArea JTextArea组件用于接受来自用户的多行文本它可实现可滚动界面JTextArea组件可使用下列构造函数创建 JTextArea JTextArea introws intcols JTextArea Stringtext JTextArea Stringtext introws intcols JTextArea Documentdoc JTextArea Documentdoc Stringtext introws intcols JLabeljl newJLabel 文本区 con add jl JTextAreata newJTextArea 5 10 con add ta 29 11 4 5复选框 JCheckBox 复选框用于为用户提供一组选项JCheckBox类具有下列构造函数 JCheckBox JCheckBox Iconicon JCheckBox Iconicon booleanselected JCheckBox Stringtext JCheckBox Stringtext booleanselected JCheckBox Stringtext Iconicon JCheckBox Stringtext Iconicon booleanselected 30 11 4 6单选按钮 JRadioButton 单选按钮允许用户从多个选项中选择其中一个ButtonGroup用于在Swing中创建组JRadioButton对象可使用下列构造函数创建 JRadioButton JRadioButton Iconicon JRadioButton Icon booleanselected JRadioButton Stringtext JRadioButton Stringtext booleanselected JRadioButton Stringtext Iconicon JRadioButton Stringtext Iconicon booleanselected 31 11 4 7列表框 JList publicJList 使用空模型构造JListpublicJList ListModeldataModel 构造一个列表 用它显示指定模型中的元素 publicJList Object listData 构造一个列表以显示指定数组listData的元素 JList不支持滚动 要启用滚动 可使用下列代码 JScrollPanemyScrollPane newJScrollPane myScrollPane getViewport setView dataList Stringstars 安东尼奥 班德拉斯 来昂纳多 迪卡普尼奥 桑德拉 布洛克 休 格兰特 朱莉亚 罗伯茨 JListmoviestars newJList stars 32 11 4 8组合框 JComboBox 文本域和下拉列表的组合在Swing中 组合框由JComboBox表示构造函数如下 publicJComboBox 此构造函数使用缺省数据模型创建JComboBoxpublicJComboBox ComboBoxModelasModel 使用现有ComboBoxModel中的项目的组合框publicJComboBox Object items 包含指定数组元素的组合框 Stringnames 弗雷德里克 福西斯 约翰 克里沙姆 玛丽 希金斯 克拉克 帕特丽夏 康威尔 JComboBoxauthors newJComboBox names 33 11 4 9滑块 JSlider JSlider 创建滑块默认范围为0至100水平方向JSlider intorientation 创建范围为0至100 初值为50 水平或垂直滑块 方向取值为JSl

温馨提示

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

最新文档

评论

0/150

提交评论