Java图形界面设计基础

    |     2015年6月3日   |   图形界面(GUI)   |     0 条评论   |    1564

早先程序用最简单的输入输出:用户在键盘输入,程序把信息打在屏幕上。现代程序要求图形用户界面(GUI,Graphical User Interface),界面里有菜单、按钮,用户用鼠标点选项、点按钮来驱动功能模块。

本章学习如何用 Java 编写 GUI 程序,以及如何通过 GUI 完成输入和输出。

一、AWT 和 Swing

早期用抽象窗口工具包 AWT(Abstract Window Toolkit)。现在多用 Swing。Swing 可以看作 AWT 的改良,不是完全替代,而是提高和扩展,写 GUI 时两者都要用。它们共存于 Java 基础类(JFC)中。

重要差别:AWT 依赖主平台绘制组件;Swing 有自己的机制,在主平台窗口里绘制和管理组件。所以同一套 AWT 程序在不同平台外观可能有差异,基于 Swing 的应用在各平台上更接近同一风格。

Swing 中的类从 AWT 继承,有些直接扩展对应类,例如 JApplet、JDialog、JFrame、JWindow。设计图形界面主要引入两个包:javax.swing(基本类)和 java.awt.event(事件接口和类)。

对比项 AWT Swing
绘制方式 依赖主平台组件 自己在窗口中绘制
跨平台外观 可能有差异 更一致
典型窗口类 Frame、Window JFrame、JDialog、JWindow

二、组件和容器

组件(Component)是图形界面的基本元素,用户可以直接操作,例如按钮。容器(Container)是复合元素,可以包含组件,例如面板。

Java 为每种组件预定义类,程序通过它们或子类创建对象:Swing 的 JButton 对象就是按钮。JFrame 对象就是窗口。所有组件的共有操作定义在 Component 超类中,所有容器的共有操作定义在 Container 中,例如大多数容器都能用 add() 添加组件。

Component、Container 和 Graphics 是 AWT 的关键类。容器被当作特殊组件,可以放进另一个容器:若干按钮和文本框分放在两个面板,再把面板和另一些按钮放入窗口。这种层次构造能以增量方式搭出复杂界面。

三、事件驱动程序设计

图形界面上的事件指在某个组件上发生的用户操作,例如单击按钮,这个按钮就是事件的激发者。监视事件的对象叫监视器,它提供响应方法。要把监视器和事件源关联起来,需要向事件对象注册监视器。

实现事件处理主要有两条路:重写 handleEvent(工作量较大);或实现系统提供的监听接口。java.awt.event 模型有三个组成元素:源对象、监视器对象、事件对象。每个源对象维护已注册监视器列表,只有注册之后系统才会把事件通知监视器。

以按钮为例:JButton 对象 button 被点击时产生 ActionEvent。监视器类必须实现 ActionListener,写出 actionPerformed,再用 addActionListener 注册。实际点击会产生一串 ChangeEvent 和 ActionEvent,应用程序通常只处理完整按下动作对应的那一次 ActionEvent。

表 11-1 给出有代表性的事件类型和产生这些事件的部分 Swing 组件:

111

每个事件类型都有相应的监视器接口,表 11-2 列出了每个接口的方法。实现接口的类必须实现其中定义的全部方法。

112

一句话总结:Swing 在 AWT 窗口里自己画组件;容器套组件,事件源注册监听器,点击后系统把 ActionEvent 交给 actionPerformed。

转载请注明来源:Java图形界面设计基础
本文链接地址:https://ai.zhousir.top/?p=751
回复 取消