Java—Swing概述与 JFrame、JDialog 的使用

本文介绍了AWT的历史、缺点及Swing的补充改进,重点讲解了JFrame和JDialog在Swing中的应用,以及它们在GUI设计中的角色。

Swing概述:


什么是AWT?
定义: 在早期JDK1.0发布时,Sun公司就为GUI开发提供了一套基础类库,这套类库被称为AWT(Abstract Window Toolkit),即抽象窗口工具包。
目的: AWT的起初设想就是为了统一实现不同操作系统的图像界面。
缺陷:
不同操作系统图形库的功能可能不一样,在一个平台上存在的功能在另外一个平台上则可能不存在,为此AWT不得不通过牺牲功能来实现平台无关性。
AWT是一个重量级组件,使用麻烦,设计出的图形界面不够美观且功能有限。

什么是Swing?
定义: Swing是在原有的AWT的基础上进行了补充和改进,提供了更加丰富的组件和功能,来满足GUI设计的一切需求。
说明:
Swing是一种轻量级组件,它由Java语言开发,同时底层以AWT为基础。
同AWT相比,在实际开发中,更多的是使用Swing进行图形用户界面开发。
Swing组件为实现图形用户界面提供了很多基础类库,多数位于java.awt、javax.swing包及其子包下

Swing组件继承关系:
在这里插入图片描述

说明:
①Swing组件的所有类都继承自Container类,然后根据GUI开发的功能扩展了2个主要分支:容器分支(包括Window窗口和Panel面板)和组件分支。

②容器分支就是为了实现图形用户界面窗口容器而设计的。

③组件分支则是为了实现向容器中填充数据、元素以及人机交互组件等功能。

④Swing组件类中,常用的顶级容器类包括有JApplet、JFrame和JDialog

⑤常用组件AbstractButton类及其子类是用来定义按钮常见行为的工具类。

⑥JTextComponent类及其子类就是用来定义文本内容编辑区域的工具类。


JFrame的使用:


说明:
在Swing组件中,最常见的一个容器就是JFrame。
JFrame是一个独立存在的顶级容器(也叫窗口),不能放置在其他容器之中
JFrame支持通用窗口所有的基本功能,例如窗口最小化、设定窗口大小等。

package First;

import java.awt.*;

import javax.swing.*;

public class Main1 {
		 	public static void main(String[] args) {
		 			//创建并设置JFrame容器窗口
		 			JFrame jf = new JFrame() ;//此时的窗口是不可见的,需要使用下面的方法进行设置可见
		 			
		 			//设置位置(单位是像素)
		 			jf.setLocation(200, 300);
		 			
		 			//设置大小(单位是像素)
		 			jf.setSize(400, 600);
		 			
		 			//当窗口关闭的时候,eclipse并不会停止运行,这个时候怎么能够使窗口关闭的时候,eclipse也会停止运行。
		 			//在关闭的时候退出
		 			jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		 			
		 			//设置窗口的标题
		 			jf.setTitle("我的第一个窗口");

					//设置可见
		 			jf.setVisible(true);//true是可见的,false是不可见的
		 		}
}

在这里插入图片描述

说明:
通过JFrame jf = new JFrame() ;语句创建一个窗口,这个窗口是隐藏的,需要使jf.setVisible(true);语句让窗口显示出来,一般这个显示窗口的语句放在最后写。

因为当关闭窗口的时候,Java并不会停止运行,所以可以使用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)方法,当关闭窗口的时候,让Java停止运行。


JDialog的使用:(配合JFrame说明)


说明:
JDialog是Swing的另外一个顶级容器,通常用来表示对话框窗口
JDialog对话框可分为两种:模态对话框和非模态对话框
在这里插入图片描述
说明:
对话框是模态或者非模态,可以在创建JDialog对象时为构造方法传入参数来设置,也可以在创建JDialog对象后调用它的setModal()方法来进行设置。
常用构造方法:
在这里插入图片描述

package First;

import java.awt.*;

import javax.swing.*;

public class Main1 {
		 	public static void main(String[] args) {
		 			//创建并设置JFrame容器窗口
		 			JFrame jf = new JFrame() ;//此时的窗口是不可见的,需要使用下面的方法进行设置可见
		 			
		 			//设置位置(单位是像素)
		 			jf.setLocation(200, 300);
		 			
		 			//设置大小(单位是像素)
		 			jf.setSize(400, 600);
		 			
		 			//当窗口关闭的时候,eclipse并不会停止运行,这个时候怎么能够使窗口关闭的时候,eclipse也会停止运行。
		 			//在关闭的时候退出
		 			jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		 			
		 			//设置窗口的标题
		 			jf.setTitle("我的第一个窗口");

					//创建了一个模式对话框
		 			//如果创建非模式对话框的话,吧true删了就行
		 			JDialog dia = new JDialog(jf , "dia" , true);
		 			
		 			//在关闭的时候退出
		 			dia.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
		 			
		 			dia.setLocation(300, 400);
		 			dia.setSize(400, 500);
		 			
		 			//设置可见
		 			dia.setVisible(true);

					//设置可见
		 			jf.setVisible(true);//true是可见的,false是不可见的
		 		}
}

在这里插入图片描述
说明:
虽然JFrame和JDialog都可以创建顶级容器窗口,但JDialog创建的窗口右上角没有放大和缩小功能。

由于创建JDialog容器对象时,设置的模态参数modal为true,所以在操作时,必须先关闭JDialog对话框后才可以与JFrame窗口进行交互。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉的小Meng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值