欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

【Java GUI】Java GUI基础,

来源: javaer 分享于  点击 9890 次 点评:30

【Java GUI】Java GUI基础,


AWT和Swing

Swing是对AWT的提高和扩展。在写GUI程序时,Swing和AWT都要作用。他们共存于 Java基础类(JFC)中。

尽管AWT和Swing都提供了构造图形界面元素的类,但它们的虫药方面有所不同。AWT依赖于主平台绘制用户界面组件,而Swing有自己的机制,在主平台提供的窗口中绘制和管理界面组件。Swing和AWT之间的最明显的区别是界面组件的外观,AWT在不同平台上运行相同的程序,界面的外观和风格可能会有些差异。然而一个基于Swing的应用程序可能在任何平台上都会有相同的外观和风格。

Swing中的类是从AWT继承的,有些Swing类直接扩展AWT中对应的类。如JApplet JDialog JFrame JWindow

使用Swing设计图形界面,主要引入两个包
javax.swing包和java.awt.event包

组件和容器

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

Java语言为每种组件都预定义类,程序通过它们或者它们的子类各种组件对象。如Swing中预定义的按钮类JButton是一种类,程序创建的JButton对象,或JButton子类的对象就是按钮。
Java也为每种容器预定义类,程序通过它们或它们的子类创建各种容器对象。例如,Swing中预定义的窗口类JFrame是一种容器类,程序创建的JFrame或JFrame子类的对象就是窗口。

为了统一管理组件和容器,为所有组件类定义超类,把组件的共有操作都定义在Component类中。同样,为所有容器类定义超类Container类,把容器的共有操作都定义在Container类中。例如,Container类中定义了add()方法,大多数容器都可以用add()方法向容器添加组件。

Component Container和Graphics类是AWT库中的关键类。为能层次地构造复杂的图形界面,容器被当做特殊的组件,可以把容器放入另一个容器中。这种层次地构造界面的方法,都以增量的方式构造复杂的用户界面。

事件驱动程序设计基础

1.事件/监视器/监视器注册
图形界面上的事件是指在某个组件上发生用户操作。例如,用户单机了界面上的某个按钮,就说在这个按钮上发生了事件,这个按钮对象就是事件的击发者。对事件作监视的对象成为监视器,监视器提供响应事件的处理方法。为了让监视器与事件对象关联起来,需要对事件对象作监视器注册,告诉系统事件对象的监视器。

以程序相应按钮事件为例,程序要创建按钮对象,把它添加到界面中,要为按钮监视器注册,程序要有响应按钮事件的方法。当”单机按钮”事件发生时,系统就调用已为这个按钮注册的事件处理方法,完成处理按钮事件的工作。

2.实现事件处理的途径
Java语言编写事件处理程序主要有两种方案,一个是程序重设handleEvent,采用这个方法的程序工作量稍大一些。另一个方法是程序实现一些系统设定的接口。java按事件类型提供多种接口,作为监视器对象的类穾实现相应的接口,即实现响应事件的方法。当事件发生时,系统内设的handleEvent方法就自动调用监视器的类实现的响应事件的方法。

java.awt.event包中用来检测并对事件做出反应的模型包括以下三个组成元素
①源对象
②监视器对象
③事件对象

一个事件驱动程序要做的工作除了创建源对象和监视器对象之外,还必须安排监视器了解源对象,或者向源对象注册监视器。每个源对象有一个已经注册的监视器列表,提供一个方法能向该列表添加监视器对象。只有在源对象注册了监视器之后,系统才会将源对象上发生的时间通知监视器对象。

3.事件类型和监视器接口
在Java语言中,为了便于系统管理事件,也为了便于程序作监视器注册,系统将时间分类,称为事件类型。系统为每个事件类型提供一个接口。要作为监视器对象的类必须实现相应的接口,提供接口规定的响应时间的方法。

再以程序相应按钮事件为例,JButton类对象button可以是一个事件的击发者。当用户点击界面中与button对应的按钮时,button对象就会产生一个ActionEvent类型的时间。如果监视器对象时obj,对象obj的类是Obj,则类Obj必须实现addActionListener方法注册它的监视器obj。

程序运行时,当用户点击button对象对应的按钮时,系统就讲一个ActionEvent对象从事件传递到监视器。ActionEvent对象包含的信息包括事件发生在哪一个按钮,以及有关该事件的其他信息。

实际事件发生时,通常会产生一系列的时间,例如,用户点击按钮,会产生ChangeEvent事件提示光标到了按钮上,接着又是一个ChangeEvent事件表示鼠标被按下,然后是ActionEvent事件表示鼠标已松开,但光标依旧在按钮上,最后是ChangeEvent事件,表示光标已经离开按钮,但是应用程序通常只处理按下按钮的完整动作的单个ActionEvent事件。

每个事件类型都有一个相应的监视器接口,实现监视器接口的类必须实现所有定义在接口中的方法。

相关文章

    暂无相关文章
相关栏目:

用户点评