Java——GUI(图形用户界面)

这篇具有很好参考价值的文章主要介绍了Java——GUI(图形用户界面)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习目标:

1、掌握布局管理器、AWT事件处理机制以及常用事件

2、熟悉Swing组件的使用

3、了解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开始学习图形用户界面。

8.1 AWT概述

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

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

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

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

Java——GUI(图形用户界面)

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);
		
	}
}

 Java——GUI(图形用户界面)

8.2 布局管理器 

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

Java——GUI(图形用户界面)

 FlowLayout

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

Java——GUI(图形用户界面)

表中,列出了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);
		
	}
}

 Java——GUI(图形用户界面)

BorderLayout

BorderLayout (边界布局管理器) 是一种较为复杂的布方式,它将容器划分为五个区域,分别是东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。组件可以被放置在这五个区域中的任意一个。BorderLayout布局的效果如图所示

Java——GUI(图形用户界面)

从图可以看出BorderLayout边界布局管理器,将容器划分为五个区域,其中箭头是指改变容器大小时,各个区域需要改变的方向。也就是说,在改变容器时NORTH和SOUTH区域高度不变长度调整,WEST和EAST区域宽度不变高度调整CENTER会相应进行调整。 

当向BorderLayout布局管理器的容器中添加组件时,需要使用add(Componentcomp,Object constraints)方法。其中参数comp表示要添加的组件,constraints指定将组件添加到布局中的方式和位置的对象,它是一个Obiect类型,在传参时可以使用BorderLayout类提供的5个常量,它们分别是EAST、SOUTH、WEST、NORTH和CENTER。

案例代码
接下来通过一个案例来演示一下BorderLayout布局管理器对组件布局的效果:

package cn.itcast.chapter08.example03;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;

public class Example03 {
	public static void main(String[] args) {
		
		Frame f = new Frame("BorderLayout");	//创建一个BorderLayout的窗体
		f.setLayout(new BorderLayout());	//设置窗体中的布局管理器
		f.setSize(300, 300);	//设置窗体大小
		f.setLocation(300, 200);	//设置窗体显示位置
		f.setVisible(true);		//设置窗体可见
		//下面代码是创建5个按钮,分别用于填充BorderLayout的5个区域
		Button but1 = new Button("东部");
		Button but2 = new Button("西部");
		
		Button but3 = new Button("南部");
		Button but4 = new Button("北部");
		Button but5 = new Button("中部");
		
		//将创建好的按钮添加到窗体中,并设置按钮所在区域
		f.add(but1,BorderLayout.EAST);
		f.add(but2,BorderLayout.WEST);
		f.add(but3,BorderLayout.SOUTH);
		f.add(but4,BorderLayout.NORTH);
		f.add(but5,BorderLayout.CENTER);
		
		
	}

}

Java——GUI(图形用户界面)

 GridLayout

GridLayout(网格布局管理器) 使用纵横线将容器分成n行m列大小相等的网格每个网格中放置一个组件。添加到容器中的组件首先放置在第1行第1列(左上角)的网格中,然后在第1行的网格中从左向右依次放置其他组件,行满后继续在下一行中从左到右放置组件。与FlowLayout不同的是,放置在GridLayout布局管理器中的组件将自动占据网格的整个区域。

接下来学习下GridLayout的构造方法,如表所示

Java——GUI(图形用户界面)

表中,列出了GridLayout的三个构造方法,其中,参数rows代表行数,cols代表列数,hgap和vgap规定水平和垂直方向的间隙。水平间隙指的是网格之间的水平距离,垂直间隙指的是网格之间的垂直距离。

案例代码

接下来通过一个案例演示GridLayout布局的用法 :

package cn.itcast.chapter08.example04;

import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;

public class Example04 {
	public static void main(String[] args) {
		Frame f = new Frame("GridLayout");	//创建一个GridLayout窗体
		f.setLayout(new GridLayout(3,3));	//设置GridLayout网格布局管理器,该窗体网格为3*3
		f.setSize(300, 300);	//设置窗体大小
		f.setLocation(400, 300);	//设置窗体位置
		
		
		//循环添加9个按钮到GridLayout
		for (int i = 1; i <= 9; i++) {
			Button but = new Button("but"+i);
			f.add(but);	//想窗体中添加按钮
		}
		f.setVisible(true); //设置窗体可见
	}
}

Java——GUI(图形用户界面)

GridBagLayout 

GridBagLayout (网格包布局管理器)是最灵活、最复杂的布局管理器。与GridLayout布局管理器类似,不同的是,它允许网格中的组件大小各不相同而且允许一个组件跨越一个或者多个网格

使用GridBagLayout布局管理器的步骤如下:
(1)创建GridbagLayout布局管理器,并使容器采用该布局管理器

Java——GUI(图形用户界面)

(2)创建GridBagontraints对象(布局约束条件),并设置该对象的相关属性 

Java——GUI(图形用户界面)

 (3)调用GridBagLayout对象的setConstraints()方法建立GridBagConstraints对象和受控组件之间的关联

Java——GUI(图形用户界面)

(4)向容器中添加组件

Java——GUI(图形用户界面)

GridBagConstraints对象可以重复使用,只需要改变它的属性即可。如果要向容器中添加多个组件,则重复 (2) 、 (3) 、 (4) 步骤
从上面的步可以看出,使用GridBagLayout布局管理器的关键在于GridBagConstraints对象,它才是控制容器中每个组件布局的核心类,在GridBagConstraints类中有很多表示约束的属性,下面对GridBagConstraints类的一些常用属性进行介绍,如表所示。 文章来源地址https://www.toymoban.com/news/detail-490909.html

到了这里,关于Java——GUI(图形用户界面)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何设计和构建一个PyQt图形用户界面(GUI)

    欢迎来到PyQt的世界!设计和构建一个图形用户界面(GUI)可以是一项令人兴奋且有趣的任务。 首先,你需要确保已经安装了PyQt。如果你还没有安装,可以通过以下命令在你的Python环境中安装: 现在,让我们开始设计你的第一个PyQt GUI! 第一步:创建窗口 想象一下,如果你

    2024年02月12日
    浏览(40)
  • Python tkinter(GUI编程)模块教程:打造出精美图形用户界面

    随着程序越来越复杂,命令行已经无法满足我们的需求,图形化界面已成为当前主流的界面设计。在Python中,tkinter是一种简单易用的GUI编程工具,可以帮助我们快速地创建图形用户界面。本文将通过实例详细介绍如何使用Python tkinter模块来打造出精美的图形用户界面。 安装

    2024年02月13日
    浏览(46)
  • MCU 的 TOP 15 图形GUI库:选择最适合你的图形用户界面(三)

    在嵌入式系统开发中,选择一个合适的 图形用户界面(GUI)库 是至关重要的。在屏幕上显示的时候,使用 现成的图形库 ,这样开发人员就不需要弄清楚底层任务,例如如何绘制像素、线条、形状,如果再高级一点,则可以绘制某些对象,例如窗口、按钮等。 前两期我们介

    2024年02月03日
    浏览(41)
  • 【Python GUI库】六个图形用户界面库优缺点及实例预览

    在Python中,有很多库可以帮助创建图形用户界面(GUI)。以下是一些流行的选择: Python的标准库之一,用于创建窗口、按钮、滑动条和其他常见的GUI元素。对于简单的应用程序,Tkinter可能就足够了。 Tkinter的优点: 1.Tkinter是Python的标准GUI库,易于学习和使用,提供了基本的GU

    2024年02月03日
    浏览(45)
  • 【Unity 3D】图形界面GUI的讲解及在C#中实现用户登录界面的实战(附源码)

    需要源码请点赞关注收藏后评论区留言并且私信~~~ 在游戏开发过程中,游戏界面占据了非常重要的地位,玩家启动游戏的时候,首先看到的就是游戏的UI,其中包含图片、按钮和高级控件等等,UGUI和GUI是Unity 3D中最常用的两个UI系统。 GUI是Graphical User Interface的缩写,Unity的图

    2024年02月10日
    浏览(43)
  • Python实现交互窗口功能(Tkinter;面向对象的图形化用户界面(GUI)模块)(一)

    本文主要介绍Python中实现GUI的Tkinter模块以及模块中的控件及其使用 Python自带了tkinter 模块,面向对象的GUI工具包 TK 的Python编程接口,提供了快速便利地创建GUI应用程序的方法。 其图像化编程的基本步骤通常包括: 导入 tkinter 模块 创建 GUI 根窗体 添加人机交互控件并编写相

    2024年02月08日
    浏览(54)
  • java 图形用户界面

    目录 Swing与AWT概述 Swing概述——组件显示  框架与窗体 创建框架对象 框架Frame类结构  框架对象的创建及常用方法 创建Swing窗体对象 Swing窗体JFrame 类结构  Swing 窗体对象的创建  窗体对象常用属性 常用组件——文本组件 JLabel JTextField JPasswordField JTextArea​编辑  Jlist文本列表

    2024年02月06日
    浏览(46)
  • 【老生谈算法】基于matlab时域频域处理的语音信号变声处理系统设计与算法原理(论文+程序源码+GUI图形用户界面)——变声算法

    大家好,今天给大家介绍基于matlab的语音信号变声处理系统设计与算法原理(论文+程序源码)。 运用matlab软件实现对声音的变声处理,利用离散付里叶变换进行频谱分析;设计数字滤波器组;通过时域和频域方法做出各种音效效果,实现变速(慢放、快放),变调(频谱左

    2024年02月04日
    浏览(56)
  • 深入探索Java GUI编程:构建交互丰富的用户界面

    Java GUI编程是构建交互式用户界面的关键技术之一。本文将深入研究Java GUI编程的基本概念和原理,介绍Swing和JavaFX两种主流的GUI框架,并通过实例演示它们的使用。读者将学习如何创建各种组件、布局管理、事件处理以及美化界面,从而构建出功能丰富、美观而又用户友好的

    2024年02月16日
    浏览(44)
  • 低光图像增强:利用深度学习的LLNet与图形用户界面进行优化的实践

    第一部分:引言与LLNet概述 随着技术的快速进步,图像增强已经变得日益重要。低光照条件下的图像经常受到噪声、模糊和颜色失真的影响,这使得图像的质量受到损害。为了解决这一问题,研究者们开发了多种技术来增强低光图像。其中,深度学习技术因其卓越的性能和广

    2024年02月12日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包