GUI-1-AWT-Swing


GUI

即:Graphical User Interface 图形用户界面

用于自己制作人机界面。当然,所有程序设计语言都有GUI设计功能

java中有哪些类库来用于GUI设计

分别位于java.awt 、 javax.swing 。简记为 AWT、Swing

AWT

AWT处理用于界面元素的时候,是把这些元素的创建和行为委托给目标平台的本地GUI工具进行处理

故所创建的使用的界面或者按钮具有本地外观的感觉,所以并不是完全跨平台。。。

Swing

Swing是在AWT基础上发展的,Swing中自然也用到很多AWT的知识。

但比AWT改进了用户界面,而且所需要的系统资源更少,Swing是纯Java组件,完全实现了跨平台,

AWT概述

即:Abstract Window Toolkit 抽象窗口工具包

这里面有一套与本地的图形界面进行交互的接口,是Java提供的用来设置图形用户界面的简单工具。

AWT中有两个抽象基本类型将组件分为两大类。分别为 MenuComponent、Component

Component就是其他的AWT的组建的抽象基本类,其中Container表示容器,容器用来存放其他的组件,有两种类型的容器:Window、Panel、

Window

不依赖于其他容器,独立存在。有两个子类:Frame、Dialog。

Frame类带有标题、可以调整大小

Dialog类可以被移动,但不能改变大小。

package test1;
import java.awt.*;


public class Class1{
public static void main(String[] args){


	//创建Frame对象,设置长、宽,并可见
	Frame f = new Frame("Frame窗口");
	f.setSize(300,200);
	f.setVisible(true);
	
	//创建Dialog对象,设置长、宽,并可见
	Dialog d = new Dialog(f,"Dialog窗口");
	d.setSize(100,100);
	d.setVisible(true);
	
}
}

然而,我都能拖动并调整大小。。。。

这时候弹出两个窗口是无法直接关闭的,只能对程序强制停止。

如果要实现单击关闭窗口,必须用Frame注册WindowListener监听器。

Panel

不能单独存在,只能存在于其他的容器中(Window或其子类)

package test1;
import java.awt.*;

public class Class1{
public static void main(String[] args){

	//创建Frame对象,设置长、宽,并可见
	Frame f = new Frame("Frame窗口");
	Panel p = new Panel();
	p.add(new Button("按钮"));
	f.add(p);
	f.setSize(300,200);
	f.setVisible(true);
}
}

运行失败

The package java.awt is not accessible

把以下代码添加到module-info.java中,也就是正在运行的类的旁边。似乎是eclipse才会遇到的问题。

module test1 {
	requires java.desktop;
}

下一节接 AWT事件处理