




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第9章Swing图形用户界面 GUI 设计 内容提要 本章讲述JavaGUI的发展以及如何使用强大的Java2Swing库进行GUI程序设计 包括AWT和Swing的区别和联系 各种常见组件和控件的使用 2 9 1Swing图形用户界面设计概述 SUN的AWT Java处理图形用户界面的初始途径 AWT库处理图形的基本方法 把这些元素的创建和行为交给目标平台上的本地GUI工具箱进行处理 理论上 一次编写 随处运行 实际上 一次编写 随处调试 IFC InternetFoundationClasses Sun与Netscape合作开发出 Swing 3 Swing的AWT关系 AWT为每一个组件分配一个操作系统窗口 大型应用程序中 大量这样的窗口会占用大量资源降低系统性能 Swing的很多用户界面元素 如菜单 按钮等 都是画在他们的容器中的 占用更少的系统资源 增加了更多的组件 且允许控制程序的外观 Swing并不是完全摒弃AWT 而是一组建立在AWT之上的包 它提供了大量预建的类 importjava awt importjavax swing 4 JApplet java lang Applet的扩展版本 JButton 按钮或命令按钮 JCheckBox 复选框 JCheckBoxMenuItem 复选菜单项 JComboBox 组合框 JComponent Swing组件的基类 JDialog 对话框窗口的基类 JLabel 标签项 JList 列表框 JMenu 菜单 JMenuBar 菜单条 JMenuItem 菜单项 JPanel 通用的轻量容器 JPasswordField 文本框 用来输入口令 5 JPopupMenu 弹出式菜单 JPopupMenu Separator 分隔线 弹出式菜单专用 JProgressBar 进度条 JRadioButton 单选按钮 JRadioButtonMenuItem 单选菜单 JScrollBar 滚动条 JTabbedPane 标签板 JTable 二维表 JTextArea 文本域 多行显示 JTextField 文本行 可编辑 JTextPane 文本板 JToolBar 工具栏 JWindow 窗口 6 9 1Swing图形用户界面设计概述 在Java的GUI程序中 需要一个框架窗口 JFrame 来放置其它的层板和组件 JFrame的默认大小为0 0并且是不可见的 用setBounds方法设置框架的大小 setVisible true 显示窗口 7 例9 1 8 9 2文本与字体 本章9 1节的 HelloWorld 程序中演示了默认字体字符串的显示 但是我们常常需要使用不同的字体 通过setFont 方法可以改变字体 可以根据字体名来指定字体 想找出某个计算机上的可用字体 你可以通过调用GraphicsEnvironment类的getAvaiilableFamilyNames方法实现 该方法返回包含所有可用字体名的字符串数组 GraphicsEnvironment类描述了用户系统上的图形环境 可以使用静态方法getLocalGraphicsEnviroment来得到该类的一个实例 下面是字体显示的例子 9 例9 2 10 9 3图形设计 Java2D提供了和设备无关的坐标系统 它不仅负责用户坐标和设备坐标的转换 还提供了一些非常有用的二维绘图功能 包括几何图形 直线式样 图像以及上一节的文本与字体处理 一 Graphics2DJava2D的绘图环境是一个Graphics2D对象 他源自于Graphics 如果要使用Java2D的功能 需要将Graphics对象转化为Graphics2D对象 11 如果要重绘一个组件 需要调用repaint 方法 voidrepaint 重绘整个组件 voidrepaint intx inty intwidth intheight 重绘组件指定的范围 voidrepaint Rectanglerec 重绘组件位于矩形指定的范围 有时系统会自动执行绘图操作 此时 paint 方法会自动被执行 这发生在 当组件第一次成为可见时 当组件的大小改变时 当组件被覆盖后还原时 12 Graphics2D提供下列方法设置绘图环境 voidsetBackground Colorcolor 设置绘图环境的背景颜色 voidsetPaint Paintpaint 设置绘图环境的绘图颜色 voidsetStroke Strokes 设置绘图环境画笔 stroke 的样式 Graphics2D提供下列方法进行绘图 voiddraw Shapes 将指定的形状s绘出 voidfill Shapes 填满一个指定的形状s voiddrawstring Stringstr floatx floaty 将一个字符串显示出来 13 二 几何形状 Java2D提供了一些基本的几何形状 定义在java awt geom包中 Point2D Double doublex doubley 生成位于坐标 x y 的点 Ellipse2D Double doublex doubley doublewidth doubleheight 以 x y 为外接矩形左上角坐标以width和height为宽和高画椭圆 Arc2D Double doublex doubley doublewidth doubleheight doublestart doubleextend inttype 生成弧线 extend为弧线延伸角度 type可取值CHORD PIE OPEN 其他参数同椭圆 Line2D Double doublex1 doubley1 doublex2 doubley2 以 x1 y1 为起点 x2 y2 为终点画直线 Rectangle2D Double doublex doubley doublewidth doubleheight x y 为左上角坐标 width height为宽高画矩形 RoundRectangle2D Double doublex doubley doublewidth doubleheight 画一个圆角矩形 14 例9 3 15 9 4框架与面板 基于Swing的GUI程序的构成 创建一个框架窗口 创建框架窗口需要使用JFrame类 还要一个面板来放置组件 即创建一个JPanel对象 看一下例9 1中的部分代码 16 创建了一个继承自JPanel的新类JPanel在JPanel的构造函数中 通过setBackground方法将JPanel的背景颜色设为白色 创建一个框架窗口 并把JPanel类的对象放入框架窗口的内容板 17 最后 在应用程序的main 方法中加上处理窗口事件的代码 这里是用来关闭窗口的 18 9 5标签 JLabel是用来显示包含文字或图形的标签 用户不能编辑所显示的文字 常用的构造函数如下 JLabel 生成JLabel对象 JLabel Iconicon 生成包含图形的JLabel对象 JLabel Stringtext 生成包含文字的JLabel对象 JLabel Iconicon intalignment 生成包含图形的JLabel对象并指定其水平对齐的方式 LEFT CENTER RIGHT LEADING和TRAILING JLabel Stringtext intalignment 生成包含文字的JLabel对象并指定其水平对齐的方式 JLabel Stringtext Iconicon intalignment 生成包含图形和文字的JLabel对象 文字会显示在图形的后面 19 JLabel常用的方法 voidsetText Stringtext 定义该组件所能显示的文字 voidsetIcon Iconicon 定义该组件所能显示的图形 voidsetIconTextGap intgap 定义文字和图形间的距离 单位为像素 voidsetHorizontalAlignment intalignment 设置标记内容的水平对齐方式 LEFT CENTER RIGHT LEADING和TRAILING voidsetHorizontalTextPosition intalignment 设置标记内文字相对于图形的水平位置 LEFT CENTER RIGHT LEADING和TRAILING voidsetVerticalAlignment intalignment 设置标记内容的垂直对齐方式 TOP CENTER和BOTTOM voidsetVerticalTextPosition intalignment 设置标记内文字相对于图形的垂直对齐方式 TOP CENTER和BOTTOM 20 例9 4 21 9 6按钮 JButton类用来生成按钮 常用的构造函数如下 JButton 生成JButton对象 JButton Iconicon 生成以图形表示的JButton对象 JButton Stringtext 生成以文字表示的JButton对象 JButton Stringtext Iconicon 生成包含文字和图形的JButton对象 下面我们使用例子说明 22 例9 5 23 24 程序运行如图9 4所示 图9 4按钮示例 25 9 7复选框 复选框 JCheckBox 也是一种按钮 常用的构造函数如下 JCheckBox 生成复选框 JCheckBox Stringstr 生成包含文字的复选框 JCheckBox Stringstr booleanselected 同上 若selected为true 则此复选框已被选中 JCheckBox Iconico 生成包含图标的复选框 JCheckBox Iconico booleanselected 同上 若selected为true 则此复选框已被选中 JCheckBox Stringstr Iconico 生成包含文本和图案的复选框 JCheckBox Stringstr Iconico booleanselected 同上 若selected为true 则此复选框已被选中 26 9 8单选按钮 单选按钮 JRadioButton 与复选框类似 不同的是同组的单选按钮只有一个可以被选中 需要用ButtonGroup将一组单选按钮加在一起 下面举例说明单选按钮和复选框的使用 27 例9 6 28 9 9文本域与文本区 文本域 JTextField 和文本区 JTextArea 可以用来接受用户输入的文本 文本域允许用户编辑单行的文本 而文本区则可以编辑多行文本 JTextField的构造函数如下 JTextField 生成JTextField JTextField intcols 将文本域的大小设为cols行 JTextField Stringtext 指定文本域的默认值为text JTextField Stringtext intcols 设定文本域为cols行 并指定默认值 可以使用getText 方法得到当前的文本 使用setText 方法可以设定文本 密码域 JPasswordField 是JTextField的子类 用来接收输入的密码 使用getPassword 方法可以得到用户的输入 29 例9 7 30 9 10列表框 列表框 JList 将所有选项在列表中列出 用户可以在这些选项中选择一个或多个 常用的构造函数如下 JList 生成JList JList Object items 生成包含数组内所有元素的JList JList Vectoritems 生成包含Vector内所有元素的JList 常有方法 voidsetSelectionMode intmode 定义列表的选择模式 voidsetSelectedIndex intindex 选择第index个元素 第一个元素index值为0 voidsetSelectedIndices int indices 选择列表中一组元素 JList本身并不具备滚动功能 我们可以使用JScrollPane将滚动条加到列表中 JScrollPane Componentcomp 将滚动条加入组件comp中 31 9 11选择框 选择框 JComboBox 和列表框类似 但它只能有一个选项被选中 不过如果想编辑选项 就一定要使用选择框了 JComboBox 生成JComboBox JComboBox Object items 生成包含数组内所有元素的JComboBox JComboBox Vectoritems 生成包含Vector内所有元素的JComboBox 常用方法 voidsetEditable booleanflag 若flag为true 则该选择框可编辑 voidsetSelectedIndex intindex 选择第index个元素 第一个元素index值为0 我们举例说明JComboBox和JList的使用 32 例9 8 33 程序运行结果如图9 7所示 图9 7选择框与列表框 34 9 12菜单 Swing菜单是由JMenuBar JMenu和JMenuItem类支持 这些类分别支持菜单条 菜单和菜单项 Swing菜单实际上是使用按钮建立的 所以我们可以对他们使用动作监听器 ActionListener 要想向程序中添加菜单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 特殊句式和情景交际(讲义)-2024年高考英语一轮复习(新高考)
- 碳、硅及无机非金属材料(复习讲义)-2026年高考化学一轮复习(福建专用)原卷版
- 上海市杨浦区2024-2025学年七年级(下)期末语文试卷(五四学制)解析版
- 人教版八年级英语下册专练:单项选择专练100题(含答案)
- 人教版八年级英语下册重点语法过关:现在完成时(含答案)
- 2021年1月国开电大法学本科《国际法》期末纸质考试试题及答案
- 配镜专业科普知识培训内容课件
- 2025版铁投劳务分包合同实施标准
- 2025年森林资源培育与承包山林合作协议
- 2025年度兼职软件测试人员聘用合同示范
- 2025年职工职业技能竞赛(制图员赛项)参考试题库(含答案)
- 胖东来管理制度
- 学校教育用地土地租赁合同
- 乳腺癌图文课件版
- 大学意识形态安全教育
- 原材料不合格预防措施
- 高压氧护理进修汇报
- 中国神经病理性疼痛诊疗指南(2024版)解读
- 2024年微信小程序开发与代运营合同
- 2024国有企业与私营企业之间的混合所有制改革合作协议
- 【电气施工】工业厂房机电安装工程施工组织设计方案
评论
0/150
提交评论