JAVA——GUI

GUI全称是GraphicalUser Interface,即图形用户界面。顾名思义,就是应用程序提供给用户操作的图形界面,包括窗口、菜单、按钮、工具栏和其他各种图形界面元素。目前,图形用户界面已经成为一种趋势,几乎所有的程序设计语言都提供了GUI设计功能。Java中针对GUI设计提供了丰富的类库,这些类分别位于java.awt和javaxswing包中,简称为AWT和Swing。其中,AWT是SUN公司最早推出的一套API,它需要利用本地操作系统所提供的图形库,属于重量级组件,不跨平台,它的组件种类有限,可以提供基本的GUI设计工具,却无法实现目前GUI设计所需的所有功能。随后,SUN公司对AWT进行改进,提供了Swing组件,Swing组件由纯Java语言编写,属于轻量级组件,可跨平台,Swing不仅实现了AWT中的所有功能,而且提供了更加丰富的组件和功能,足以满足GUI设计的一切需求。Swing会用到AWT中的许多知识,掌握了AWT,学习Swing就变成了一件很容易的事情,因此本章将从AWT开始学习图形用户界面GUI

 

AWT是用于创建图形用户界面的一个工具包,它提供了一系列用于实现图形界面的组件,如窗口、按钮、文本框、对话框等。在JDK中针对每个组件都提供了对应的Java类,这些类都位于iava.awt包中,接下来通过一个图例来描述这些类的继承关系,如图所示

 从图的继承关系可以看出,在AWT中组件分为两大类,这两类的基类分别是Component和MenuComponent。其中,MenuComponent是所有与菜单相关组件的父类,Component则是除菜单外其他AWT组件的父类,它表示一个能以图形化方式显示出来,并可与用户交互的对象。

Component类通常被称为组件,根据Component的不同作用,可将其分为基本组件类和容器类。基本组件类是诸如按钮、文本框之类的图形界面元素,而容器类则是通过Component的子类Container实例化的对象。Container类表示容器它是一种特殊的组件,可以用来容纳其他组件。Container容器又分为两种类型分别是Window和Panel,接下来对两种类型进行详细讲解。

Window类是不依赖其他容器而独立存在的容器,它有两个子类,分别是Frame类和Dialog类。Frame类用于创建一个具有标题栏的框架窗口,作为程序的主界面,Dialog类用于创建一个对话框,实现与用户的信息交互,如图所示

Panel也是一个容器,但是它不能单独存在,只能存在其他容器 (Window或其子类)中,一个Panel对象代表了一个长方形的区域,在这个区域中可以容纳其他组件。在程序中通常会使用Panel来实现一些特殊的布局。

package cn.itcast.chapter08.example01;

import java.awt.Frame;

public class Example01 {
	public static void main(String[] args) {
		//建立一个新窗体对象
		Frame f = new Frame("我的窗体!");
		//设置窗体的宽和高
		f.setSize(400, 300);
		//设置窗体在屏幕中所处的位置(参数是左上角坐标)
		f.setLocation(300, 200);
		//设置窗体可见
		f.setVisible(true);
		
	}
}

 8.1小节提到过,组件不能单独存在,必须放置于容器当中,而组件在容器中的位置和尺寸是由布局管理器来决定的。在java.awt包中提供了五种布局管理器,分别是FlowLayout (流式布局管理器) 、BorderLayout (边界布局管理器GridLayout(网格布局管理器) 、GridBagLayout (网格包布局管理器)和CardLayout (卡片布局管理器)。每个容器在创建时都会使用一种默认的布局管理器,在程序中可以通过调用容器对象的setLayout()方法设置布局管理器通过布局管理器来自动进行组件的布局管理。例如把一个Frame窗体的布局管理器设置为FlowLayout,代码如下所示:

 FlowLayout

流式布局管理器 (FlowLayout) 是最简单的布局管理器,在这种布局下,容器会将组件按照添加顺序从左向右放置。当到达容器的边界时,会自动将组件放到下一行的开始位置。这些组件可以左对齐、居中对齐(默认方式)或右对齐的方式排列。FlowLayout对象有三个构造方法,如表所示

表中,列出了FlowLayout的三个构造方法,其中,参数align决定组件在每行中相对于容器边界的对齐方式,可以使用该类中提供的常量作为参数传递给构造方法,其中FlowLayout.LEFT用于表示左对齐、FlowLayout.RIGHT用于表示右对齐FlowLayout.CENTER用于表示居中对齐。参数hgap和参数vgap分别设定组件之间的水平和垂直间隙,可以填入一个任意数值。

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;

public class Example02 {
	public static void main(String[] args) {
		//创建一个名为FlowLayout的窗体
		Frame f = new Frame("FlowLayout");
		//设置窗体中的布局管理器FlowLayout,所有组件左对齐,水平间距为20,垂直间距30
		f.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 30));
		//设置窗体的大小
		f.setSize(220, 300);
		//设置窗体显示位置
		f.setLocation(300, 200);
		//把按钮添加到窗口
		f.add(new Button("第1个按钮"));
		f.add(new Button("第2个按钮"));
		f.add(new Button("第3个按钮"));
		f.add(new Button("第4个按钮"));
		
		//设置窗体可见
		f.setVisible(true);
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值