AWT和Swing的概述

合集下载

Java程序设计项目教程 第9章awt和swing开发

Java程序设计项目教程 第9章awt和swing开发

9.2.1 JComponent和JFrame
9.2.2 Swing工具集的其它常用控件
1、JLabel
标签控件用于显示短 文本字符串、图像或二者 的结合。JLabel控件不对 输入事件作出反应。因此, 它无法获得键盘焦点,用 户不能往JLabel控件中录 入数据。一般用于提示信 息。
可以通过设置垂直和水 平对齐方式,指定标签显示区 中标签内容在何处对齐。默认 情况下,标签在其显示区内垂 直居中对齐。若是只显示文本 的标签,则开始边对齐;而只 显示图像的标签则水平居中对 齐。
public static void main(String args[]) {
new NewFrame("This is a Pane", 300, 300, 400, 300);
【例9.2】创建
} } class NewFrame extends Frame {
4个Panel面板,
private Panel p1, p2, p3, p4; NewFrame(String s, int x, int y, int w, int h) {
象,并使 用其常用 方法。运 行效果如
Frame fr = new Frame();
fr.setTitle("This is a Frame"); // 设定窗体标题
fr.setSize(400, 300); // 设定窗体的宽度为400,高度为300
fr.setBackground(Color.green);
p1.setBounds(0, 0, w / 2, h / 2); p2.setBounds(0, h / 2, w / 2, h / 2);
p3.setBounds(w / 2, 0, w / 2, h / 2);

java中awt和swing是的关系以及区别

java中awt和swing是的关系以及区别

java中awt和swing是的关系以及区别原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。

否则将追究法律责任。

/287631/56062简单的说:AWT 是抽象窗口组件工具包,是 java 最早的用于编写图形节目应用程序的开发包。

Swing 是为了解决 AWT 存在的问题而新开发的包,它以 AWT 为基础的。

具体的说就是:AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口。

AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系,我们把它称为peers。

也就是说,当我们利用 AWT 来构件图形用户界面的时候,我们实际上是在利用操作系统所提供的图形库。

由于不同操作系统的图形库所提供的功能是不一样的,在一个平台上存在的功能在另外一个平台上则可能不存在。

为了实现Java语言所宣称的"一次编译,到处运行"的概念,AWT 不得不通过牺牲功能来实现其平台无关性,也就是说,AWT 所提供的图形功能是各种通用型操作系统所提供的图形功能的交集。

由于AWT 是依靠本地方法来实现其功能的,我们通常把AWT控件称为重量级控件。

Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充。

例如说并不是所有的操作系统都提供了对树形控件的支持, Swing 利用了AWT 中所提供的基本作图方法对树形控件进行模拟。

由于 Swing 控件是用100%的Java代码来实现的,因此在一个平台上设计的树形控件可以在其他平台上使用。

由于在Swing 中没有使用本地方法来实现图形功能,我们通常把Swing控件称为轻量级控件。

AWT和Swing之间的基本区别:AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT 的Java程序,其运行速度比较慢。

第7章 AWT、Swing与Applet基础

第7章  AWT、Swing与Applet基础

Java 称由 称由Component类的子类或间接子类创建的对象为一个组件 类的子类或间接子类创建的对象为一个组件 类的子类或间接子类创建的对象为一个组件. 的子类或间接子类创建的对象为一个容器. 由Container的子类或间接子类创建的对象为一个容器 的子类或间接子类创建的对象为一个容器
说明: 说明: 可以向容器添加组件。 类提供了一个public 方 可以向容器添加组件。Component 类提供了一个 法 add( ),一个容器可以调用这个方法将组件添加到该容器 一个容器可以调用这个方法将组件添加到该容器 中 容器调用removeAll()方法可以移掉容器中的全部组件;调 方法可以移掉容器中的全部组件; 容器调用 方法可以移掉容器中的全部组件 用remove(Component c)方法可以移掉容器中参数指定的 方法可以移掉容器中参数指定的 组件。 组件。 每当容器添加新的组件或移掉组件时,应当让容器调用 每当容器添加新的组件或移掉组件时 应当让容器调用 validate()方法 以保证容器中的组件能正确显示出来 方法,以保证容器中的组件能正确显示出来 方法 以保证容器中的组件能正确显示出来. 注意到容器本身也是一个组件,因此你可以把一个容器添加 注意到容器本身也是一个组件 因此你可以把一个容器添加 到另一个容器中实现容器的嵌套. 到另一个容器中实现容器的嵌套 类不是包java.awt 中的类 上 中的类,上 在上图中需要注意的是 Applet 类不是包 图只是说明它是Panel的子类 是Container 的间接子类 它是 的子类,是 的间接子类.它是 图只是说明它是 的子类 中的类,不同包中的类可以有继承关系 不同包中的类可以有继承关系. 包java.applet 中的类 不同包中的类可以有继承关系
1996年,Netscape开发了工作方式完全不同 年 开发了工作方式完全不同 的GUI库,称为 库 称为IFC(Internet Foundation Classes),将用户界面元素绘制到空白窗口 , 对等体只需要构造和绘制窗口即可。 上,对等体只需要构造和绘制窗口即可。 Sun与之合作完善了这种方法,命名为 与之合作完善了这种方法, 与之合作完善了这种方法 “Swing”。 。 Swing提供了更好的用户界面组建,其事件 提供了更好的用户界面组建, 提供了更好的用户界面组建 处理模型还是与AWT的相同。 的相同。 处理模型还是与 的相同

Java图形用户界面(GUI)编程Swing和AWT库的使用

Java图形用户界面(GUI)编程Swing和AWT库的使用

Java图形用户界面(GUI)编程Swing和AWT库的使用在编程领域,图形用户界面(Graphical User Interface,简称GUI)是一种通过图形、图像和图标等可视化元素与用户进行交互的界面形式。

Java作为一种跨平台的编程语言,提供了多种库和框架来实现GUI编程的需求。

其中,Swing和AWT是两个常用的Java GUI库,它们提供了丰富的组件和功能来创建用户友好的界面。

本文将重点介绍Java Swing和AWT库的使用,帮助读者了解和掌握这两个库的基本用法。

一、Swing库的使用Swing库是Java提供的一个基于AWT库的GUI工具包,它提供了丰富的组件和功能来创建交互式的图形界面。

下面将介绍几个常用的Swing组件及其使用方法。

1. JFrame窗口JFrame是Swing中最基本的容器,它代表了一个窗口。

我们可以使用JFrame类创建一个窗口,并在其中添加其他的组件。

以下是一个示例代码:```javaimport javax.swing.*;public class MyFrame extends JFrame {public MyFrame() {setTitle("My Frame");setSize(300, 200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true);}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {new MyFrame();}});}```在这个例子中,我们创建了一个名为"My Frame"的窗口,并设置了窗口的大小为300x200像素。

通过调用`setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)`方法,我们将在用户关闭窗口时退出程序。

Java----AWT组件开发和Swing界面编程

Java----AWT组件开发和Swing界面编程

Java----AWT组件开发和Swing界⾯编程⼀、AWT组件开发1、AWTAWT是抽象窗⼝⼯具箱的缩写,它为编写图形⽤户界⾯提供了⽤户接⼝,通过这个接⼝就可以继承很多⽅法,省去了很多⼯作。

AWT还能使应⽤程序更好地同⽤户进⾏交互。

AWT中的容器是⼀种特殊的组件,他可以包含其他组件,即可以把组件⽅法容器中。

类是⽤来存放其他组件的Component类的⼦类,Frame类⼜是Component的⼦类。

Frame类⽤于创建具有标题栏和边界的窗⼝。

这⾥通过继承Frame类来建⽴⾃⼰的界⾯。

[java]1. public class test extendsFrame{2. //创建构造器3. public test() throws HeadlessException {4. this.setTitle("第⼀个窗⼝程序");5. //x , y是距离显⽰器左上⾓的距离;w , h是窗⼝的长宽6. this.setBounds(100, 100, 250, 250);7. //或者使⽤以下⽅式代替上⾯的⼀句代码8. // this.setLocation(100, 100);9. // this.setSize(250 , 250);10. this.setVisible(true);11. }12. public static void main(String[] str) {13. new test();14. }15. }上⾯是窗⼝中⼀些必不可少的东西,下⾯是⼀些窗⼝的基础应⽤:>setTitle(“窗⼝”):定义窗⼝名称>add(button):把按钮添加到窗⼝中>setBackground(Color):设置窗⼝的背景颜⾊>setResizable(boolean):设置窗⼝⼤⼩是否可以改变>setAlwaysOnTop(boolean):设置窗⼝是否总在最上⾯>setBounds(x, y, w, h):设置窗⼝起始位置和⼤⼩>setVisible(boolean):设置窗⼝可见如果想创建多个窗⼝,只需要在主⽅法main()中创建多个对象就⾏了。

javaSwing总结PPT教学课件

javaSwing总结PPT教学课件

不可独立 显示的组 件
JComponent
Component Container
Swing组件类的层次
Window
可以独立 显示的组 件
Jpanel
JTable
JTree

JTextAr ea
Frame JFrame
Dialog JDialog
2020/12/11
语默制造 14
Swing组件
Swing组件类的层次
• 最常用的JFrame窗口类的构造器是无参构造器,使用该构造器将创建一 个初始不可见的新窗体。除此之外还有具有一个String类参数的构造器, 使用该构造器能够在初始时就创建一个具有标题的新窗体。还有两种需 要给出图形配置参数的构造器,这两种构造器在本书中不进行介绍。
• 创建新窗口后,就可以通过JFrame窗口类的方法来设置新窗口。首先使 用无参构造器创建的是一个不可见的新窗体,所以要使用方法来将窗体 设置为可见的形式。在JFrame窗口类中定义了一个setVisible方法来设 置窗口的可见性,该方法具有一个布尔型参数,true表示可见,false表 示不可见。将初始状态下的窗口设置为不可见是有原因的,因为有很多 对窗口的操作需要在窗口不可见的状态下执行,从而setVisible方法通 过在程序的最后执行。
• 16 • 17 • 18 • 19
• 20
import javax.swing.*;//导入Swing包 //继承JFrame类 public class Swing1 extends JFrame {
//定义构造器 public Swing1() {
this.setLayout(null);//设置布局管理器 JLabel jl=new JLabel();//定义一个标签 jl.setText("第一个Swing程序");//设置显示的文字 jl.setBounds(50,50,400,50);//设置标签的大小和位置 this.add(jl);//将标签放到窗口中 this.setBounds(300,250,500,200);//设置窗口的大小和位置 this.setVisible(true); //设置窗口是可见的 }

Java第06章--1(AWT与Swing)

Java第06章--1(AWT与Swing)

• • 视图(view):它专门负责组件的绘制工作,主要涉及 paint()方法。MVC设计范式的最大优点是一个模型可以 有多个视图,每个视图是一个不同侧面但内容却是完整的。 • 一个模型的几个视图都是从不同侧面、用完整的内容来描 述同一个模型。当模型的控制器要修改其内容时,均会通 知这每个视图,它们都会自动地更新自己的视图显示。 • • 控制器(controller):专门负责管理和处理组件所接 收到的事件,这些事件可能来自用户的操作。如键盘输入、 鼠标点击和拖放等,也可能来自系统,如系统计时器发出 的事件。 • 视图和其控制器之间的通信不仅频繁且非常复杂,因此 JFC系统把两者封装成一个整体。
• • 模型(model):模型负责获取和管理组件的状态,用户若 需要询问组件的状态时,实际上是询问该组件的模型。 • 若要询问Swing型按钮组件(JButton 类的一个对象)的状 态,可调用JButton 类的父类javax.swing.AbstractButton所 提供的isSelected()方法,它定义为: – public boolean isSelected() { ... } – 该方法返回一个逻辑值,若为true则该按钮组件被压下,反 之返回false则按钮是松开状态。 • javax.swing包中的各种组件,对于描述该组件状态和内容的 模 型 都 是 用 以 Model 结 尾 的 接 口 实 现 , 例 如 , 对 于 按 钮 在 javax.swing包中有一个如下定义的接口: – public interface ButtonModel extends ItemSelectable { ... } • 每个JButton类的对象都保存着一个表示该按钮组件模型的对 象,调用其父类AbstractButton的方法就可以得到它,即: – JButton b = new JButton( "确定" );

COE-Java第04--1(AWT与Swing)

COE-Java第04--1(AWT与Swing)

2、使用AWT(Abstract Window Toolkit)组件
Container类 Container类是由Component类派生出来的一种特殊类,用来 表 示 各 种 GUI 组 件 的 容 器 。 与 JDK1.1 和 JDK1.2 版 本 不 同 , 从 JDK1.3版本开始,Container类是普通的class类型而不是抽象类, 即: public class java.awt.Container extends ponent { ... } 其主要功能包括: 组件的管理:方法add()可以向其中添加一个组件,remove() 删除其中的一个组件,… 布局管理:每个Container类都和一个布局管理器相联,以确 定其中组件的布局。 Container类可以通过setLayout()方法设 置某种布局方式。 常见的Container类有:Windows, Frame, Dialog, Panel, Applet
Swing组件是用来替代AWT的重量组件而不是整个AWT。 AWT是Swing的基础,Swing提供了功能更强的、更有弹性的用 户 界 面 组 件 , 但 Swing 仍 使 用 AWT 的 授 权 型 事 件 处 理 模 式 (delegation event model)。 Swing和AWT之间的关系:
2、使用AWT(Abstract Window Toolkit) 组件
布局管理器类 Java中提供了各种布局管理器类来管理各种组件在容器中的 放置位置和尺寸,这些类都是实现了LayoutManager接口的。标 准的布局管理器类有: FlowLayout BorderLayout GridLayout CardLayout GridBagLayout 还可以通过实现LayoutManager接口来定义自己的布局管理器。 确定组件的位置和尺寸有两种办法,其一是让AWT提供的布局管 理器支配,这是由布局管理器自动地设置的;另外一种办法是通 过组件类的对象调用setLocation和setSize来设置。此时,必须用 Container(容器)类提供的setLayout()方法把布局管理器设置为 空(null):setLayout(null) ;

Java中GUI工具包AWT和Swing用法介绍

Java中GUI工具包AWT和Swing用法介绍

Java 中GUI ⼯具包AWT 和Swing ⽤法介绍java 中编写 GUI 有两中⼯具包,分别为 AWT 、Swing 。

Swing 是 AWT 的拓展,Swing 具有⽐ AWT 丰富的组件和⽅法。

AWT 和 Swing 都能跨平台使⽤;AWT 会随着不同的系统平台,UI 样式会有所变化,Swing 则不会,设计完毕后在所有平台下样式⼀致。

1import java.awt.*;⼀个 awt ⽰例下⾯是⼀个窗⼝⽰例12345678910import java.awt.*;public class MyFrame extends Frame { public MyFrame(){ super("测试"); setSize(400,200); setVisible(true);} public static void Main(String args[]){new MyFrame();}}创建⼀个窗⼝,要继承 Frame ,同时会继承 Frame 中的⼀些⽅法;Frame 中:super ⽅法可以设置窗⼝标题;setSize 设置窗⼝⼤⼩,(width,hight)setVisible 设置是否显⽰窗⼝,true 显⽰,false 隐藏setLayout(new FlowLayout());⽤于设置窗⼝布局;add(组件); ⽤于向窗⼝添加组件,例如按钮等。

我们来向窗⼝添加组件123import java.awt.*;public class MyFrame extends Frame {public MyFrame(){4567891011121314super("测试");setLayout(new FlowLayout());Button btn=new Button("Button");Font f=new Font("宋体",Font.BOLD,28);btn.setFont(f);add(btn);setSize(400,200); setVisible(true);}在 main ⽅法中启动窗⼝12public static void main(String args[]){new MyFrame();效果事件java 中,事件分为三个⽅⾯描述,事件源:发⽣事件的对象事件处理:委托事件处理模型事件监听者:负责处理事件⾸先B监听A,设置监听的内容,并设置响应内容。

java_swing面试题目(3篇)

java_swing面试题目(3篇)

第1篇一、Java Swing基本概念1. 什么是Java Swing?答:Java Swing是一种用于创建图形用户界面的库,它是Java语言的一个扩展,允许开发者创建具有丰富视觉效果的桌面应用程序。

2. Swing的组件有哪些?答:Swing组件包括基本组件(如按钮、标签、文本框等)、容器组件(如面板、窗口、滚动条等)、特殊组件(如树、表格等)。

3. Swing与AWT的区别是什么?答:Swing是基于Java的,而AWT是基于本地平台的。

Swing组件在不同平台上表现一致,而AWT组件在不同平台上可能有所不同。

Swing运行速度较慢,但提供了更多功能和更好的用户体验。

二、Swing基本组件1. 如何创建一个按钮,并设置其文本和字体?答:使用JButton类创建按钮,并设置其文本和字体。

```javaJButton button = new JButton("按钮");button.setFont(new Font("宋体", Font.PLAIN, 12));```2. 如何获取并设置文本框中的文本?答:使用JTextField类创建文本框,并通过getText()和setText()方法获取和设置文本。

```javaJTextField textField = new JTextField();String text = textField.getText(); // 获取文本textField.setText("新文本"); // 设置文本```3. 如何使用单选按钮(JRadioButton)实现多选?答:使用JRadioButton类创建单选按钮,并使用ButtonGroup类将它们分组。

```javaJRadioButton radioButton1 = new JRadioButton("选项1");JRadioButton radioButton2 = new JRadioButton("选项2");ButtonGroup buttonGroup = new ButtonGroup();buttonGroup.add(radioButton1);buttonGroup.add(radioButton2);```4. 如何使用复选框(JCheckBox)实现多选?答:使用JCheckBox类创建复选框,它们之间互不影响。

java语言中awt和swing组件的基本用法

java语言中awt和swing组件的基本用法

java语言中awt和swing组件的基本用法Java语言中AWT和Swing组件是用于创建图形用户界面(GUI)的工具。

AWT(Abstract Window Toolkit)是Java最早提供的GUI工具包,而Swing是在AWT基础上进行了扩展和改进的高级GUI工具包。

本文将介绍AWT和Swing组件的基本用法。

一、AWT组件的基本用法AWT组件是Java中最基本的GUI组件,它们在不同的平台上都能够保持一致的外观和行为。

下面是AWT常用组件的基本用法:1. Frame(窗口):使用Frame类可以创建一个基本的窗口。

可以调用setTitle()方法设置窗口标题,setSize()方法设置窗口大小,setVisible()方法显示窗口。

例如:```javaFrame frame = new Frame("My Window");frame.setSize(400, 300);frame.setVisible(true);```2. Panel(面板):Panel是一个容器,用于存放其他组件。

可以使用add()方法将其他组件添加到Panel中。

例如:```javaPanel panel = new Panel();Button button = new Button("Click Me");panel.add(button);```3. Button(按钮):Button用于触发特定的动作。

可以使用addActionListener()方法为按钮添加动作监听器。

例如:```javaButton button = new Button("Click Me");button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.out.println("Button Clicked");}});```4. Label(标签):Label用于显示文本信息。

Awt与swing的对比

Awt与swing的对比

Swing提供了许多新的图形界面组件。除了有与AWT 类似的按钮、标签、复选框、菜单等基本组件外,还 增加了丰富的高层组件集合,例如表格、树等。 Swing外观感觉采作可插入的外观感觉。在AWT组件 中,由于控制组件外观的对等类与具体平台相关,使 得AWT组件总是具有与本机操作系统相关的外观。
Swing可以使Java程序在一个平台上运行时能够有不 同的外观,可以根据不同用户的习惯确定。
设置顶层容器
在设置Swing顶层容器时要特别注意:与AWT组 件不同,Swing组件不能直接添加到顶层容器中, 必须添加到一个与顶层容器相关联的内容面板中上。 为了便于组件位置的规划,一般建立一个中间层容 器,存放所有组件,然后把该中间容器放入顶层容 器的内容面板中,或者将该面板设置为顶层容器的 内容面板。
布局管理器
在Swing GUI中,只有当使用JPanel或向顶层容 器的内容面板中添加组件时使用布局管理器。其他 的Swing容器使用特定的布局,不用对其布局进行 设置。 Swing中提供的布局管理器,除了在AWT中使用 的Flowlayout、GridLayout、BorderLayout、 CardLayout以及GridBagLayout外,增加了 BoxLayout、SpringLayout。原有的布局管理器的 作用与用法都与AWT中的相类似。
awtawt与awtawt与awtawt与awtawt与与swingswing的对比与swingswing的对比与swingswing的对比与swingswing的对比的对比的对比的对比的对比?提供的组件与外观?swing是java为开发gui提供的更加实用的新技术它比awt提供了更加丰富的组件并且增加了很多新的特性与功能
事件处理

awt和swing组件的基本用法

awt和swing组件的基本用法

AWT和Swing都是Java中用于创建图形用户界面(GUI)的工具。

它们提供了一系列的组件和容器,可以用来创建和管理用户界面元素。

AWT(Abstract Window Toolkit)是Java提供的原始GUI工具包,它包含了许多用于创建GUI组件和容器的类。

Swing则是在AWT的基础上提供了一系列的增强功能和改进,包括更好的组件、更强大的布局管理器以及改进的事件处理等。

下面分别介绍AWT和Swing的一些基本组件和用法:AWT组件:1. 组件(Component):这是所有GUI组件的基类,包括按钮、标签、文本框等。

可以使用add()方法将组件添加到容器中。

2. 容器(Container):容器是一种特殊的组件,可以包含其他组件。

可以使用add()方法将组件添加到容器中。

3. 布局管理器(LayoutManager):布局管理器用于控制组件在容器中的布局方式。

AWT提供了几种布局管理器,如BorderLayout、FlowLayout、GridLayout等。

示例代码:```javaimport java.awt.*;import java.awt.event.*;public class MyAWTDemo {public static void main(String[] args) {Frame frame = new Frame(); // 创建一个Frame窗口frame.setTitle("JavaGUIComponent"); // 设置窗口标题 frame.setBounds(20, 30, 300, 280); // 设置窗口大小和位置frame.setVisible(true); // 设置窗口为可见Button button = new Button("Click me!"); // 创建一个按钮frame.add(button); // 将按钮添加到Frame窗口中frame.addWindowListener(new WindowAdapter() { // 添加窗口关闭事件监听器public void windowClosing(WindowEvent e) {System.exit(0); // 关闭应用程序}});}}```Swing组件:1. JComponent:这是Swing中所有组件的基类,继承自AWT的Component类。

[VIP专享]Java(一)串讲笔记 ……(5)、(6)

[VIP专享]Java(一)串讲笔记 ……(5)、(6)

Java(一)串讲笔记……(5)、(6)第5章图形界面设计(一)1、AWT和SwingAWT和Swing的不同:AWT依赖于主平台绘制用户界面组件;而Swing有自己的机制,在主平台提供的窗口中绘制和管理界面组件。

Swing与AWT之间的最明显的区别是界面组件的外观,AWT在不同平台上运行相同的程序,界面的外观和风格可能会有一些差异。

然而,一个基于Swing的应用程序可能在任何平台上都会有相同的外观和风格。

使用Swing主要引入两个包:javax.swing包含Swing的基本类;java.awt.event包含与处理事件相关的接口和类。

2、组件和容器组件(Component)是图形界面的基本元素,用户可以直接操作,例如按钮。

容器(Container)是图形界面的复合元素,容器可以包含组件,例如面板。

Component、Container和Graphics类是AWT库中的关键类,为能层次地构造复杂的图形界面,容器被当作特殊的组件,可以把容器放入另一个容器中。

3、事件驱动程序设计基础图形界面上的事件是指在某个组件上发生用户操作。

对事件作监视的对象称为监视器,监视器提供响应事件的处理方法。

实现事件处理的途径●Java语言编写事件处理程序主要有两种方案:一个是程序重设方法handleEvent(Eventevt),采用这个方案的程序工作量稍大一些。

另一个方案是程序实现一些系统设定的接口。

●java.awt.event包中用来检测并对事件做出反应的模型包括以下三个组成元素:(1)源对象:事件“发生”在这个组件上,它与一组“侦听”该事件的对象保持着联系。

(2)监视器对象:是一个实现预定义的接口的类的一个对象,该对象的类要提供对发生的事件作处理的方法。

(3)事件对象:它包含描述当事件发生时从源传递给监视器的特定事件的信息。

事件类型:在Java语言中,为了便于系统管理事件,也为了便于程序作监视器注册,系统将事件分类,称为事件类型。

AWT与Swing专题介绍

AWT与Swing专题介绍

AWT与Swing专题介绍JFCJava平台的JFC(Java Foundation Classes,Java基础类库)包括了开发GUI 所需的组件和服务,为人们开发GUI提供了很大帮助。

JFC最初是在1997年JavaOne开发者大会上发布的,它包括五个部分的API:AWT、Java2D、Accessibility、Drag&Drop以及Swing。

AWT:抽象窗口工具集,包括了建立GUI的各种组件与事件处理机制。

Java2D:Java二维图形工具,是对java.awt和java.awt.image包的扩展,为二维图形和图像的显示提供了更高级的一组类。

Accessibility:Java高级访问工具,提供了一组高级的工具帮助程序实现非常规的输入、输出,例如屏幕读取器、屏幕放大器、语音处理等。

Drag&Drop:拖放功能,实现Java程序与不支持Java的本地应用之间数据的交换。

Swing:Swing提供了丰富的组件,并且提供了独立于运行平台的GUI构造框架。

Swing是纯Java实现的轻量级(Light-weight)组件,没有本地代码,不依赖操作系统的支持,这是与AWT组件的最大区别。

Swing在不同的平台上都能够具有一致的显示风格,并且能够提供本地窗口系统不支持的其他特性。

AWT基本原理Java是一种跨平台的语言,要求Java程序能够在不同的平台上运行,为此AWT类库中的各种操作被定义成在一个抽象窗口中进行。

抽象窗口使得界面的设计能够独立于界面的实现,使利用AWT开发的GUI能够适用于所有的平台系统,满足Java程序的可移植性要求。

AWT在一开始设计时确定的目标,就是要具有独立于平台的API但同时保留每个平台的界面显示风格(Look and Feel,L&F)。

例如,对于按钮,AWT只定义了一个由Button类提供的API,但Windows平台和Solaris平台下的按钮外观是不同的。

java语言中awt和swing组件的基本用法

java语言中awt和swing组件的基本用法

java语言中awt和swing组件的基本用法AWT (Abstract Window Toolkit)是Java编程语言的一套图形用户界面(GUI)组件集,它提供了创建和管理窗口、按钮、标签等图形组件的能力。

AWT组件是依赖于操作系统的本地GUI组件。

下面是使用AWT组件的基本步骤:1.导入AWT相关的类:通常在使用AWT组件之前,需要导入`java.awt`和`java.awt.event`包中的类。

2.创建一个Frame:使用`Frame`类来创建一个顶级窗口。

3.创建其他组件:使用AWT提供的组件类(如`Button`、`Label`等)来创建其他需要的组件。

4.将组件添加到Frame:使用`add()`方法将其他组件添加到Frame中。

5.设置Frame的布局:使用`setLayout()`方法设置Frame的布局方式,如`FlowLayout`、`GridLayout`等。

6.设置Frame的大小和可见性:使用`setSize()`方法设置Frame 的大小,使用`setVisible(true)`方法设置Frame可见。

7.添加事件监听器:使用`addActionListener()`方法为按钮等组件添加事件监听器。

Swing是Java编程语言中提供的一组GUI组件,它是在AWT的基础上进行了增强和扩展。

Swing组件是纯Java组件,不依赖于操作系统的本地组件,因此具有更高的可移植性和灵活性。

下面是使用Swing组件的基本步骤:1.导入Swing相关的类:通常在使用Swing组件之前,需要导入`javax.swing`包中的类。

2.创建一个JFrame:使用`JFrame`类来创建一个顶级窗口。

3.创建其他组件:使用Swing提供的组件类(如`JButton`、`JLabel`等)来创建其他需要的组件。

4.将组件添加到JFrame中:使用`add()`方法将其他组件添加到JFrame中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AWT和Swing的概述
Java基本类
Java基本类(JFC),由一些软件包组成。

这些软件包主要包括下面一些应用程序接口(API):
•抽象窗口工具集(AWT)(1.1及以上版本)。

•Swing构件。

•Java2D应用程序接口(2D API)。

•兼容程序接口。

上面列出的这些应用程序接口可能会出现在多个软件包中。

例如:2D API在Java.awt 和Java.awt.image软件包中都存在,虽然像Java.awt.geom等一些特殊的软件包也支持2D API,但是大量的2D API类都存在于Java.awt软件包中。

AWT(1.1及以上版本)是JFC的核心。

AWT为JFC的构成提供了以下的基本结构: •代理事件模型。

•轻量构件。

•剪贴板和数据传输。

•打印和无鼠标操作。

抽象窗口工具集
在开发applet和图形应用程序时,一般需要用到AWT,AWT是免费Java开发工具包(JDK)的一部分。

AWT的作用是给用户提供基本的界面构件,例如按钮、列表、菜单、文本域等等。

AMT 构件主要是用来建立图形用户界面的独立平台。

此外,AWT还提供事件处理结构、支持剪贴板、数据传输和图像操作。

随着2D API的出现,AWT还包括提供高级字体操作、打印、地理数据获取和输入方法等功能的软件包。

AWT的初始版本是基于在简单用户界面中开发小applet程序而设计的,与之相比,当前的AWT做了很大的改进,它提供事件模型重新设计、剪贴板和数据传输支持以及打印和无鼠标操作等功能。

从而与Parc Place的VisualWork或Borland公司的Object Windows Library(OWL)等企业级用户界面具有更多的可比性。

同位体和平台独立
随着Applet程序和图形应用程序接口的发展,AWT提供了一系列的通用类,这些通用类在引用时不需要考虑特定的窗口平台,同位体(Peer)就属于这种AWT类集。

同位体是一种本地图形用户接口(GUI)构件,由AWT类管理。

同位体的工作方法和它们对程序开发的影响常
常让人混淆。

AWT构件中,包含有对其同位体的大量实用操作。

例如,如果你使用AWT创建一个menu类的实例,那么当Java运行时系统将创建一个菜单同位体的实例,而由创建的同位体实际执行菜单的显示和管理。

在创建菜单实例中,Solaris JDK将产生一个Motif菜单同位体;Windows 95将产生一个Windows 95菜单同位体;Macintosh JDK将产生一个Macintosh菜单同位体等等。

一个Java程序创建并显示AWT构件,AWT构件创建并显示本地构件(同位体)。

AWT 开发组决定使用同位体方法,这一方法使得交叉平台窗口工具开发变得极为迅速。

使用同位体可以避免重新实现本地窗口构件中已包含的实用工具,而且,使用同位体还能使applet 和应用程序保留在本地系统中,这是因为同位体实质上是由本地构件组成的,而AWT类仅仅是同位体外围的包装与操作工具。

虽然在使用AWT时,很少需要直接处理同位体,但它们的存在却影响其操作结果。

例如,如果没有同位体,则某些ponent方法不会象我们所预期的那样进行工作。

使用同位体方法可以在记录时间内实现GUI工具构件。

然而,使用同位体也有很多的缺点,同位体设计基础存在缺陷并且不能缩放。

轻量构件
AWT构件全都是重量构件,即它们都具有同位体,并且在本地(不透明)窗口中进行显示。

这样使用将花费昂贵的代价,而且在更改其默认行为时,不可以将其派生为子类。

此外,它们必须是矩形的,而且不能有透明的背景。

同位体可以快速产生一个GUI工具构件。

因为本地同位体做了更多的实际工作,而AWT
类所做的仅仅是表面工作,因此,它很容易开发。

开发最初的AWT,只用了不到6个星期的时间。

但这种效率带的利益在很大程度上被一些不利因素抵销了,比如基本的同位体结构、有限的事件模式以及同位体与AWT之间不匹配造成的大量缺陷。

1.1版本的AWT引人了轻量构件的概念。

轻量构件直接扩展了ponent
或java.awt.Container。

轻量构件没有同位体,在其重量容器窗口中显示,而不是在其本身窗口中显示。

轻量构件不会导致与它们自己关连的不透明窗口的性能损失,而且还可以有透明的背景。

其中有透明背景的性能意味着即使轻量构件的界限域实际上是矩形的,它也可以显示为非矩形。

SWing的历史
要了解Swing,首先必须了解AWT,AWT是Swing的基础。

Java的发展速度超出了人们的想象,Java API中最可视的部分----AWT突然成为了人们关注的焦点。

遗憾的是,原来的AWT不能满足发展的需要。

原来的AWT不是为许多开发人员使用的、功能强大的用户界面(UI)工具包而设计的,其设计目的是支持开发小应用程序中的简单用户界面。

例如,原来的AWT缺少许多面向对象UI工具包中所能见到的特性,例如,剪贴板、打印支持和键盘导航等特性在AWT中都不存在。

原来的AWT甚至不包括弹出式菜单或滚动窗格等基本特性,而弹出式菜单和滚动
窗格是开发现代用户界面的两个基本元素。

此外,AWT的下层构件还有严重的缺陷。

人们使AWT适应基于继承的、具有很大伸缩性的事件模型。

甚至更糟,基于对等组件(peer)的体系结构也被用于AWT,该体系结构注定要成为AWT的致命弱点。

为了尽快推向市场和保持本地的界面样式,于是产生了基于对等组件的体系结构,而该体系结构注定是要失败的。

对等组件是完成薄弱的AWT对象所委托任务的本地用户界面组件。

对等组件负责完成所有的具体工作,包括绘制自己、对事件做出反应等,这使得AWT 组件除了在适当的时间与其对等组件交互外无事可做。

由于AWT类只是较复杂的本地对等组件的外壳,所以,AWT的早期开发人员能在最快的时间内创建组件。

例如,java.awt.Panel 类只包含十二行代码。

另外,对等组件的设计也有严重的缺点。

首先,在大多数平台上,对等组件都是在本地窗口中绘制的。

每个组件一个本地窗口实在不能得到高性能,为此,含有大量AWT组件的小应用程序付出了很高的性能代价。

把不同平台上的本地对等组件硬塞进Java框架中也是一个问题,使这些AWT组件跨平台的表现一致是完全不可能的。

结果,不但没有实现急需的新组件,而且开发时间都浪费在修补对等组件的错误上和不兼容问题上了。

更糟的是,AWT有很高的错误发生率。

于是,第三方开始提供他们自己的工具包,这些工具包提供了更可靠的下层构件并提供了比AWT更多的功能。

这些工具包之一是Netscape的Internet基础类(IFC),IFC是一组建立在NEXTSTEP中的用户界面工具包概念基础上的一组轻量类。

IFC组件不是对等的,在许多方面胜过了AWT组件。

IFC还吸引了更多的开发人员加盟。

由于认识到Java领域很可能在标准用户界面工具包问题上出现分裂局面,JavaSoft和Netscape达成了一个交易,共同实现Java基础类(Apple公司和IBM公司也参加了JFC 的开发)。

Netscape开发人员与Swing工程师一起合作,以便把大部分的IFC的功能嵌人到Swing组件中。

起初打算让Swing类似于Netscape的IFC。

然而,随着时间的推移,在增加了插入式界面样式等特性并修改了设计之后,Swing大大地偏离了它原来的目标。

随着Swing1.1版本的推出,虽然大量的IFC技术仍然嵌在Swing中,但是,Swing与IFC相似的部分已大部分消失了。

今天,在一个功能全面的用户界面工具包中,Swing提供了AWT和IFC中最优秀的成份。

轻量组件与重量组件的比较
轻量组件首次出现在AWT1.1版本中。

AWT最初只包括与本地对等组件相关联的重量组件,这些组件在它们自己的本地不透明窗口中绘制。

相反,轻量组件没有本地对等组件,而且在它们的重量容器的窗口中绘制。

由于轻量组件不在本地不透明的窗口中绘制,因此,它们可以有透明的背景。

透明的背景使显示的轻量组件可以是非矩形的,虽然所有组件(重量的或轻量的)都基于一个矩形边
框。

Swing组件几乎都是轻量组件,那些顶层容器:窗体、小应用程序、窗口和对话框除外。

因为轻量组件是在其容器的窗口中绘制的,而不是在自己的窗口中绘制的,所以轻量组件最终必须包含在一个重量容器中。

因此,Swing的窗体、小应用程序、窗口和对话框都必须是重量组件,以便提供一个可以在其中绘制Swing轻量组件的窗口。

好了,这是对AWT和Swing的一个概述,更具体的应用需要在不断的实践中去体会。

相关文档
最新文档