- 1、本文档共76页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 Java图形用户界面设计 广东工业大学计算机学院 Swing引言 AWT (Abstract Window Toolkit):抽象窗口工具集 在JDK1.0和1.1中作为GUI开发工具。 Swing:新一代轻量型、可移植的GUI 在JDK1.1中作为插件,在JDK1.2中作为GUI核心工具 Swing是轻量型的 是用纯Java语言编写的,具有更高的平台无关性; 不包含任何特定平台的代码,包括特定操作系统的图形控件 Swing功能更加完善 Swing增加了滚动窗口、表格和树等等组件 Swing为已有的组件增加了新特性 Swing没有完全代替AWT,而是在AWT架构之上提供了功能更加强大的用户界面组件。在采用Swing编写的程序中,需要使用基本的AWT来处理事件。 Swing体系结构 GUI的基本组成 原子组件 按钮、标签、文本字段、单选框、多选框等等 在Swing包中,所有组件都是由JComponent组件派生 容器(Container) 框架、对话框、面板等等 容器可以包含组件,也可以包含其它容器,从而以整体结构来布置界面 容器本身也是一个组件,具有组件的所有性质,除此之外还具有容纳其它组件和容器的功能 布局管理器 (AWT包中) 用于管理容器中所有组件的布局 每个容器都有默认的布局管理器 GUI的基本组成 事件处理机制(AWT包) 要能够让GUI接收用户的操作,就必须给各个组件加上事件处理机制 在事件处理过程中,主要涉及三类对象:事件、事件源和事件处理器 其它的高级特性 设计不同的感观风格,特定功能组件(文件选择器、颜色选择器等等) Swing顶层容器 Swing顶层容器 Swing顶层容器 框架 JFrame 框架的构造方法 带参的构造方法可指定窗口的标题;若构造方法无参数,此时的窗口的标题为空 框架 JFrame 框架 JFrame 对话框 JDialog JOptionPane Swing中间容器 Swing中间容器 面板 JPanel 面板的构造方法 JPanel() JPanel(LayoutManager layout) 缺省时采用流布局管理器 面板 JPanel 面板 JPanel 布局管理器 流布局管理器 FlowLayout FlowLayout:最简单的布局管理器,以容器中组件的首选尺寸为大小,按照组件加入的顺序,从左至右,从上到下排列在容器中。 FlowLayout的构造方法 FlowLayout() FlowLayout(int?align) FlowLayout(int?align, int?hgap, int?vgap) 其中参数align用于指定每一行组件的对齐方式,有左对齐(LEFT),右对齐(RIGHT)和中间对齐(CENTER)三种方式,默认为中间对齐。 参数hgap和vgap用于指定组件的水平间距和垂直间距,默认分别为5个象素点 例题代码 import java.awt.*; import javax.swing.*; public class JFrameClass extends JFrame { JButton[] button = new JButton[9]; // 定义9个按钮类对象 FlowLayout layout; // 定义布局管理器对象 public JFrameClass() { super(FlowLayout 应用举例); // 设置窗口标题 String label; layout = new FlowLayout(FlowLayout.LEFT, 10, 10); // 创建FlowLayout对象 getContentPane().setLayout(layout); // 设置布局管理器 for (int i = 0; i 9; i++) { // 创建9个按钮对象并放置在窗口的内容窗格中 label = Button # + (i + 1) + ; button[i] = new JButton(label); getContentPane().add(button[i]); } setSize(320, 150);
文档评论(0)