【Java】AWT和Swing概述

目录

一、前言

awt继承体系

container容器

常见的API

 容器的演示

AWT常用组件

Swing概述

Swing的优势:

Swing组件和AWT组件的对应关系:


一、前言

这是一个很少用的技术了,所以只是粗略的了解一下

java使用awt和swing可以完成图形化界面编程

其中AWT的全称是抽象窗具集(Abstract Window Toolkit)它是sun公司最早提供的GUI库,这个GUI库提供了一些基本功能,但这个GUI库的功能比较有限,所以后来sun公司又提供了Swing。通过使用AWT和Swng提供的图形化界面组件片,java的图形化界面编程非常简单。

awt继承体系

其中Container是一种特殊的Component,它代表一种容器,可以盛装普通的Component。
AWT中还有个非常重要的接口叫LayoutManager如果个容器中有多个组件,那么容器就需要使用 LayoutManager来管理这些组件的布局方式。


container容器

Containe继承体系

Window是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;
Panel可以容纳其他组件,但不能独立存在,它必须内嵌其他容器中使用,默认使用FlowLayout管理其内部组件布局;
ScrollPane是一个带滚动条的容器,它也不能独立存在,默认使用BorderLayout管理其内部组件布局 

常见的API

Component作为基类,提供了如下常用的方法付来设置组件的大小、位置、可见性等。

 container作为容器根类,提供了如下方法来访问容器中的组件

 容器的演示

ctrl+b查看了Frame的源码可知,Frame继承了window,所以可以直接创建对象

public class Frame extends Window implements MenuContainer 

 运行结果

 panel测试

public class PanelDemo {
    public static void main(String[] args) {
        //1、创建一个window对象,因为panel以及其他的容器都不能独立存在,必须依附于window上
        Frame frame=new Frame("这是演示Panel");
        //2、创建一个Panel对象
        Panel p =new Panel();
        //3、创建一个文本框和一个按钮,并把它们放到Panel容器中
        p.add(new TextField("这里是一个测试文本"));
        p.add(new Button("这是一个测试按钮"));
        //4、把panel放到window中
        frame.add(p);
        //5、设置window的位置以及大小
        frame.setBounds(100, 100, 500, 300);
        //6、设置window可见
        frame.setVisible(true);
    }
}

 我们发现按钮乱码了,这是因为idea中设置的是utf-8,而我们这个按钮是以我们当前的操作系统(我的是window)来创建的,是中文的默认是gbk

我们只需要在配置环境这:

 在虚拟机选项那加上下面这句即可,改成编码解码一致都是gbk就不会乱码了

-Dfile.encoding=gbk

运行: 

AWT常用组件

 件名 功能
 Button 按钮
 Canvas  用于绘图的画布
 Checkbox    复选框组件(也可当做单选框组件使用)
 CheckboxGroup

用于将多个Checkbox组件组合成一组,一组Checkbox组件将只有一个可以被选中,

即全部变成单选框组件

 Choice 下拉选择框
 Frame 窗口,在GUI程序里通过该类创建窗口
 Label 标签类,用于放置提示性文本
  List 列表框件,可以添加多项条日
 Panel 不能单独存在基本容器类,必须放到其他容器中

  滑动条组件。如果需要用户输入位于某个范围的值,就可以使用滑动条组件,比如调色板中

设置RGB的三个值所用的滑动条。当创建一个滑动条时,必须指定它的方向,初始值、滑块的大小、

最小值和最大值。

Scrollbar
 ScrollPane 带水平及垂直滚动条的容器组件
 TexlArea 多行文本域
 TextField

单行文本框 

Swing概述

Swing是由100%纯Java实现的,不再依赖于本地平台的GUI,因此可以在所有平台上都保持相同的界面外观。独立于本地平台的Swing组件被称为轻量级组件而依赖于本地平台的AWT组件被称为重量级组件

由于Swing的所有组件完全采用Java实现,不再调用本地平台的GUI,所以导致Swing图形界面的显示速度要比AWT图形界面的显示速度慢一些


,但相对于快速发展的硬件设施而言,这种微小的速度差别无妨大碍。

Swing的优势:

  • Swing组件不再依赖于本地平台的GUI,无须采用各种平台的GUI交集,因此Swing提供了大量图形界面组件远远超出了AWT所提供的图形界面组件集。
  • Swing组件不再依赖于本地平台GUI,因此不会产生与平台相关的bug。
  • Swing组件在各种平台上运行时可以保证具有相同的图形界面外观Swing提供的这些优势,让Java修形界面程序真止实现了"WriteOnce,RunAnywhere的目标。

大部分Swing组件都是JComponent抽象类的直接或间接子类(并不是全部的Swing组件),Component类定义了所有子类组件的通用方法,Component类是AWT里javaawtContainer类的子类,这也是AWT和 Swing的联系之一。绝大部分Swing组件类继承了Container类,所以Swing组件都可作为容器使用(JFrame继承了Frame类)。

Swing组件和AWT组件的对应关系:

大部分情况下,只需要在AWT组件的名称前面加个J,就可以得到其对应的Swing组件名称,但有几个例外:
1.ComboBox对应于AWT里的Choice组件,但比Chcice组件功能更富
2.JFileChwoser:对应干AWT甲的FileDialog组件。
3.ScrollBar:对应丁AWT里的Scrollbar组件注意两个组件类名中b字母的大小写差别。
4.CheckBox对应于AWT里的Checkbox组件,注意两个组件类名中b字母的大小写差别,
5.CheckBoxMenultem:对应于AWT里的CheckboxMenultem组件,注意两个组件类名中b字母的大小写差别。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>