[java/初学者/GUI编程]GUI界面设计——界面组件类

article/2025/9/23 13:21:31


 前言

GUI,即图形用户界面,其英文全称是Graphics User Interface。

它是基于图形的界面,windows就是一个图形用户界面的操作系统,而DOS是基于命令提示符的操作系统,GUI编程就是编出一个图形用户界面的软件,它使用图形的方式,以菜单、按钮、表示、图文框等标准界面元素组成的用户操作界面。

所有的图形用户界面程序(GUI编程),都要解决以下两个方面的问题:

  1. 界面设计
  2. 事件处理

针对GUI编程,java提供的诸多的类,这些类都存在于两个包内。

java.awt包,简称AWT;

AWT包是sun最早推出的一套API,它需要利用本地操作系统所提供的图形库

  1. 属于重量级组件;
  2. 不能跨平台;
  3. 组件种类有限 ;

虽然可以提供最基本的GUI设计工具,但却无法实现目前GUI设计所需的所有功能; 

java.swing包,简称Swing;

Swing包是AWT包经过改进后推出的,并且由纯java语言编写

  1. 属于轻量级组件;
  2. 可跨平台;
  3. 提供了比AWT更加丰富的组件和功能,足以满足GUI设计的一切需求。

Swing会用到许多AWT的相关知识,例如AWT布局管理和AWT事件处理机制等。

经过以上段落,我们GUI编程应该有了一些了解,

本章就让我们学习一下GUI界面设计中的界面组件类吧!

Link Start!



 GUI界面设计包括界面元素的创建以及界面的布局

这个界面元素还有另一种叫法,那就是组件,在前言中我们提到,java的界面组件类在AWT包和Swing包中,其主要有:

  • 容器类组件
  • 非容器类组件
  • 菜单类组件等等

而页面的布局可以通过布局管理器类来实现,它也存在于AWT包和Swing包中,在实际编程中可以选用不同的布局管理器。

1、常用AWT组件

①:窗体容器类——Frame

Frame是最常用的容器之一,它是Window类的派生类,利用它可以创建一个带有标题栏、可选菜单条、最小化和关闭按钮、有边界的标准窗口。

一般将它作为图形用户界面的最外层的容器,它可以包含其他的容器或组件,但其他的容器不能包含它。

其构造方法如下:

Frame();
//创建一个无标题的窗口,该窗口的默认布局为BorderLayoutFrame(String title);
//创建一个标题为title的窗口,该窗口的默认布局为BorderLayout

常用方法如下:

public Component add(Compoent c)
//将组件c添加到容器中public void setTitle(String s);
//设置窗口的标题为spublic void setSize(int width,int height);
//设置窗口的宽width和高heightpublic void setBounds(int a,int b,int width,int height);
//设置窗口出现在屏幕上的位置(a,b),以及窗口的宽width和高heightpublic void setResizable(boolean b);
//设置窗口在运行时是否可调整大小;默认是可调整大小的public void setVisible(boolean b);
//设置窗口在运行时是否可见;默认是不可见的System.exit(0);
//撤销所有的窗口

需要注意的是,Frame窗口在默认情况下是不可见的。

如若要让他显现出来,就必须调setVisible()方法或者show()方法。

下面是利用所示方法所编写的一个实例:

import java.awt.Frame;//导入包public class Start extends Frame
{public static void main(String[]args){Start frame=new Start();//创建对象frame.setBounds(400,200,500,200);//设置窗口的位置和大小frame.setTitle("Frame实例窗口");//设置窗口的标题frame.setVisible(true);//设置窗口为可见}
}

结果如图所示:

 ②:窗格容器类——Panel

Panel是一个较为简单的容器。

可以将其他的图形用户界面组件置于其上,或者放置另一个Panel(Panel嵌套)。

一般我们使用Panel把一些相关操作的组件组织起来,从而构建出操作简单、布局良好的用户界面。

虽然Panel类本身并没有多少方法,但其继承了Container和Component类的所有可用的方法。

其构造方法如下:

Panel();
//创建一个Panel对象,并使用默认的布局管理器BorderLayout摆放添加到窗格上的组件对象Panel(LayoutManager layout);
//创建一个Panel对象,并使用layout所指定的布局管理器摆放添加到窗格上的组件对象

常用方法如下:

add(Component c)
//将组件c添加到窗格上setLayout(LayoutManager layout)
//设置窗格的布局管理器为layoutsetVisible(boolean b)
//设置窗格是否可见,默认是可见的

下面是利用所示方法所编写的一个实例:

import java.awt.*;//导入包
public class Ex11_3 extends Frame
{public static void main(String[] args) {Ex11_3 frame =new Ex11_3();创建frame对象frame.setBounds(100,100,500,200); //设置窗口大小及其位置frame.setTitle("Frame实例窗口"); //窗口的标题Panel p1=new Panel();//创建窗格对象p1p1.setBackground(Color.blue);//设置p1的背景色为蓝色p1.setSize(200,80);//设置p1的大小Panel p2=new Panel();//创建窗格对象p2p2.setBackground(Color.red);//设置p2的背景色为红色p2.setSize(140,60);//设置p2的大小frame.setLayout(null);//设置窗口的布局为空布局frame.add(p1);//将p1添加到框架窗口上p1.setLayout(null);//设置p1的布局为null空布局p1.add(p2);//将p2添加到p1上frame.setVisible(true); //设置窗口为可见}
}

结果如图所示:

  ③:标签组件类——Label

标签是一种只能显示文本的组件,且内容不能被编辑。

一般用作标识或提示信息。

其构造方法如下:

Label();
//创建一个空的标签Label(String text);
//创建一个标识内容为text的标签,text的内容左对齐显示Label(String text,int alignment);
//创建一个标识内容为text的标签,
//text内容的显示对齐方式由alignment指定,alignment可以取类常数值

Label标签还提供了一些类常数,用于限定对齐方式的类常数如下:

  • Label.LEFT常数值为0,表示左对齐;
  • Label.CENTER常数值为1,表示居中对齐;
  • Label.RIGHT常数值为2,表示右对齐;

常用方法如下:

String getText()
//获取标签的标识内容setText(String text)
//设置标签的标识内容为textsetVisiable(boolean b)
//设置标签是可见的

④:单行文本框组件——TextField

单行文本框是最常用的一个组件,它可以接收用户从键盘输入的信息。

其构造方法如下:

TextField();
//创建一个空的、系统默认宽度的文本框TextField(int columns);
//窗机哪一个空的并且由columns指定宽度的文本框TextField(String text);
//创建一个具有text字符串内容的文本框TextField(String text,int columns);
//创建一个具有text字符串内容且宽度为columns的文本框

其常用方法如下:

String getText();
//获取文本框的内容setText(String text);
//将text字符串设置为文本框的内容setEchoChar(char c);
//设置密码输入方式,即当用户在文本框中输入字符时,无论输入任何字符,都显示csetEditable(boolean b);
//设置文本框的内容是否为可编辑setVisible(boolean b);
//设置文本框是否可见,默认的设置是true

⑤:多行文本框组件类——TextArea

多行文本框呈现一个多行的矩形区域,用来编辑处理多行文本。

其构造方法如下:

TextArea();
//创建一个空的多行文本框TextArea(int rows,int columns);
//创建一个具有rows行,columns列的空文本框TextArea(String text);
//创建一个具有text字符串内容的文本框

其常用方法如下:

setText(String s);
//将字符串s设置为文本框的内容,替换掉原有内容getText();
//获取文本框中的内容setEditable(boolean b);
//设置文本框中的内容是可编辑的insert(String str,int pos);
//将字符串str插入到文本框中由pos指定的位置处replaceRange(String str,int start,int end);
//以str替换掉文本中以start到end位置之间的字符

⑥:复选框组件类——Checkbox和CheckboxGroup组件组

复选框是一种可以多选的选择框。

当有多个选择供用户选择时,可使用该组件类,其在外观上显示一个方框;

当如果只是允许用户单选时,则可以讲多个Checkbox对象放在同一个CheckboxGroup组件组中,其在外观上显示为一个圆圈;

注意:CheckboxGroup不是可视组件,它用来将Checkbox组件组合在一起,实现单选操作。

Checkbox的构造方法如下:

Checkbox();
//创建一个无标识的复选框对象Checkbox(String label);
//创建一个以字符串label为标识的复选框对象Checkbox(String label,booleam state);
//创建一个以字符串label为标识的复选框对象。
//若state为true,则初始状态为选中;否则未选中

其常用方法如下:

getLabel();
//获得对象标识getState();
//获得对象选中或未选中状态getCheckboxGroup();
//获得对象选中或未选中状态setLabel(String label);
//设置对象的标识setlabel(booleam state);
//设置对象的状态setCheckGroup(CheckboxGroup g);
//将对象加入g组中

⑦:选择菜单组件类Choice

Choice类可用来构建一个弹出式选择菜单。

其构造方法如下:

Choice();
//构造一个弹出式选择项菜单对象

其常用方法如下:

add(String item);
//在菜单中添加一项(item)insert(String item,int index);
//在菜单中index所指位置插入item项remove(String item);
//在菜单中移除item项getSelectedIndex();
//获取当前选中项的位置数removeAll();
//移去菜单中所有的选项

2、常用Swing组件

在实际应用中,Swing使用的更为广泛,且有很多组件在AWT包中都有出现,用法也很相似。

①:JFrame类

JFrame其实就是之前所提到的Frame类的派生类,它是一个顶级的窗口屏幕。

其构造方法如下:

JFrame();
//构造一个初始不可见的新窗体JFrame(String text)
//创建一个新的、初始不可见的、具有指定标题的新窗体

其常用方法如下;

getContentPane();
//返回此类窗体的getContentPane对象setDefaultCloseOperation();
//设置用户在此窗体上发起close时默认执行的操作setJMenuBar(JMenuBar menubar);
//设置此窗体的菜单栏setLayout(LayoutManager manager);
//设置LayoutManager

②:JPanel类

JPanel是面板容器类,可以加入到JFrame窗体中。

JPanel默认的布局管理器FlowLayout,其自身可以嵌套组合,在不同的子容器中可包含其他组件,功能是对窗体上的那些控件进行组合。

其构造方法如下:

JPanel();
//创建具有双缓冲和流布局的新JPanelJPanel(LayoutManager layout);
//创建具有指定布局管理器的新缓冲Jpnel

以下为实例:

import javax.swing.JFrame;
import javax.swing.JPanel;
public class Ex11_4
{public static void main(String[] args){JFrame jf=new JFrame("JFame添加内容面板测试程序");jf.setSize(300,200);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);JPanel contentPane=new JPanel();jf.setContentPane(contentPane);}
}

下面为运行结果:

 

 

③:JLabel类

该类的对象可以显示文本、图形或者同时显示二者。

其构造方法如下:

JLabel();
//创建无图像且其标题栏为空字符串的JLabelJLabel(Icon image);
//创建具有指定图像的JLabel实例 JLabel(String text);
//创建具有指定文本的JLabel实例

其常用方法如下:

getText();
//返回该标签所显示的文本字符串setText(String text);
//定义此组件将要显示的单行文本

以下为实例:

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Demo3
{public static void main(String[] args){JFrame jf =new JFrame("测试程序"); //创建名为jf的窗口jf.setSize(300,200);//设置jf窗口的大小jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);//设置jf为可见JPanel contentPane=new JPanel();//创建名为contentPane的面板jf.setContentPane(contentPane);//将上述面板作为jf的内容面板//创建两个带有指定文本的标签JLabel label1=new JLabel("这是一个标签测试程序");JLabel label2=new JLabel("这是一个不可编辑的标签控件");//将标签添加到面板上contentPane.add(label1);contentPane.add(label2);}
}

下面为运行结果:

 

④:JButton类

JButton是继承AbstractButton类而来,

而AbstractButton本身就是一个抽象类,其中定义了许多组件设置的方法与组件事件驱动方法。

其构造方法如下:

JButton();
//创建不带文本或图标的按钮JButton(Icon icon);
//创建带有图标的按钮JButton(String text);
//创建带有文本的按钮JButton(String text,Icon icon);
//创建一个带有文本和图标的按钮

下面为实例:

import javax.swing.*;
public class Demo6
{public static void main(String[] args){JFrame jf =new JFrame("测试程序"); //创建名为jf的窗口jf.setSize(300,200);//设置jf窗口的大小jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);//设置jf为可见JPanel contentPane=new JPanel();//创建名为contentPane的面板jf.setContentPane(contentPane);//将上述面板作为jf的内容面板//创建两个带有文本的按键JButton b1=new JButton("确定");JButton b2=new JButton("取消");//将按键添加到面板上contentPane.add(b1);contentPane.add(b2);}
}

下面为运行结果:

⑤:JRadioButton类

其构造方法如下:

JRadioButton();
//创建一个初始化为未选择的单选按钮,其文本未设定JRadioButton(lcon icon);
//创建一个初始化为未选择的单选按钮,其具有指定的图像但无文本JRadioButton(String text);
//创建一个具有指定文本的状态为未选择的单选按钮

下面是一个小小的实例:

import javax.swing.*;public class Demo5
{static final int WIDTH=300;static final int HEIGHT=200;public static void main(String[] args){JFrame jf=new JFrame("请选择两门科目");//创建一个名为jf的,初始不可见的,具有标题的新窗体jf.setSize(WIDTH,HEIGHT);//设置窗体的大小jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭屏幕jf.setVisible(true);//设置窗体可见JPanel contentPane = new JPanel();//创建一个名为contentPane的新面板jf.setContentPane(contentPane);//将上述面板设置为jf的内容面板//创建带有文本的按钮JRadioButton jr1=new JRadioButton("java");JRadioButton jr2=new JRadioButton("Web前端");JRadioButton jr3=new JRadioButton("MySQL");JRadioButton jr4=new JRadioButton("Linux");JRadioButton jr5=new JRadioButton("大英");JRadioButton jr6=new JRadioButton("毛概");JRadioButton jr7=new JRadioButton("高数");JRadioButton jr8=new JRadioButton("数据结构");//创建按键组ButtonGroup bg1=new ButtonGroup();ButtonGroup bg2=new ButtonGroup();//将按键添加到按键组上bg1.add(jr1);bg1.add(jr2);bg1.add(jr3);bg1.add(jr4);bg2.add(jr5);bg2.add(jr6);bg2.add(jr7);bg2.add(jr8);//将按键添加到窗体上contentPane.add(jr1);contentPane.add(jr2);contentPane.add(jr3);contentPane.add(jr4);contentPane.add(jr5);contentPane.add(jr6);contentPane.add(jr7);contentPane.add(jr8);}}

下面为运行结果:


http://chatgpt.dhexx.cn/article/8ViORQRN.shtml

相关文章

QT GUI编程

QT GUI编程 一、QT基础1.1、QT简介1.2、QT应用范围1.3、开发环境1.4、QT软件下载安装教程1.5、QT内存管理1.6、第一个QT程序1.7、打印跟踪1.8、QT工程示例1.9、QT 图形编程1.10、信号与槽1.11、QT实现心仪的计算器1.12、将QT文件单独提取出来自由使用 二、窗口部件2.1、常用类介…

GUI(图形界面编程)

(1)GUI 与CLI GUI •Graphical User Interface(图形用户接口)。 •用图形的方式,来显示计算机操作的界面,这样更方便更直观。 CLI •Command line User Interface (命令行用户接口) •就是常见的Dos命令行操作。 •需要…

GUI概述

GUI简介 GUI(Graphics User Interface),中文名称为图形用户界面,是指采用图形方式显示的计算机操作用户界面,是计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。 早期,电脑向用户提…

GUI(图形用户界面)

GUI全称是Graphical User Interface ,即图形用户界面。GUI就是可以让用户直接操作的图形界面,包括窗口、菜单、按钮、工具栏和其他各种图形界面元素。 1.Swing概述 Swing是Java语言开发图形化界面的一个工具包。它以抽象窗口工具包(AWT&…

虚拟存储技术

一.实现内存扩充的技术: (1)覆盖技术: 在程序运行中,在不同时刻把同一个存储区分配给不同程序段和数据段,实现存储区共享。适用于连续存储(单一连续区分配,分区) 如图B…

浅谈进程地址空间与虚拟存储空间

早期的内存分配机制 在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时,必须保证这些程序用…

虚拟存储器系统

技术来源 来源1:来源于服务器中虚拟化feature的实现,不同的程序需要共享一片硬件资源,包括计算资源与存储资源;如何有效且安全的共享存储器就是关键。来源2:消除有限的主存容量对大的程序的限制。远古时代&#xff0c…

虚拟存储器/虚拟内存

器为每个程序提供了一个大的、一致的、私有地址空间。 三个重要功能: 将主存看成是磁盘的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据。为每个进程提供了一致的私有空间。保护每个进程的地址空间不被其他进程破…

5.虚拟存储管理

虚拟存储管理 文章目录 虚拟存储管理1.虚拟存储器概述1.1常规存储管理方式的特征和局部性原理1.2虚拟存储器的定义与特征1.3虚拟存储器的实现方法 2.请求分页存储管理方式2.1请求分页存储管理方式基本思想2.2请求分页中的硬件支持2.3内存分配策略和分配算法2.4调页策略 3.页面置…

(五)虚拟存储概念

1.需求背景 计算机系统内存空间不够用。 2.覆盖和交换 覆盖技术:把程序划分成功能独立的模块,将不会同时执行的模块共享同一块内存区域。 缺点:编程困难,增加了执行时间 交换技术:增加正在运行或需要运行的程序的内…

存储虚拟化技术的介绍

导读Java虚拟机内存的各个区域,以及这些区域的作用、服务对象以及其中可能产生的问题,作为大家的面试宝典。那一起来学习—存储虚拟化技术。 数据在整个计算机系统是最重要的一部分,也是最珍贵的。数据的存储一直是一个热议的话题&#xff0c…

进程地址空间与虚拟存储空间的理解

在进入正题前先来谈谈操作系统内存管理机制的发展历程,了解这些有利于我们更好的理解目前操作系统的内存管理机制。 一 早期的内存分配机制 在 早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行…

虚拟存储管理仿真

实验内容 模拟请求分页虚拟存储管理技术中的硬件地址变换、缺页中断及页式淘汰算法处理缺页中断 实验目的 为了使大的作业(其地址空间超过内存可用空间)或多个作业的地址空间之和超过实际主存空间时,仍能运行,引入了”虚拟存储器”的概念.使作业的一部分地址空间在主存,另一…

虚拟内存空间

每一个进程都会对应一个虚拟地址空间,32位操作系统会为每个进程分配4G(2的32次方)的虚拟地址空间,而MMU(Memory Management Unit,内存管理单元)负责把这4G虚拟内存映射到实际的物理内存中。这4G…

虚拟化存储和非虚拟化存储

有文件系统的叫虚拟化存储,没有文件系统的叫非虚拟化存储。. 虚拟化存储:由SAN 或 NAS 提供的存储空间,需要添加一层文件系统来屏蔽底层的差异性,性能较差。支持更多的虚拟化特性。 非虚拟化存储:由分布式存储提供的存储空间,没有添加文件系统,性能好,但无法支持高级特…

内存管理:虚拟存储

内存管理——虚拟存储器 目录 内存管理——虚拟存储器虚拟存储器概述常规存储管理方式的特征和局部性原理虚拟存储的定义和特征虚拟存储器的实现方法1.分页请求系统2.请求分段系统 请求分页存储管理方式请求分页中的硬件支持1.请求页表机制2.缺页中断机构3.地址变换机构 请求分…

存储系统 —— 虚拟存储器

本文主要介绍以下几方面的知识: 页式存储器(应用于虚拟存储器)虚拟存储器(深刻理解) 1.页式存储器 注: 虚拟地址或虚拟存储器的理解,请参考下文 虚拟存储器 的介绍 页式存储虚地址 VS 实地址 地…

存储虚拟化概述

存储虚拟化概述 一、基本概念 存储虚拟化(Storage Virtualization)最通俗的理解就是对存储硬件资源进行抽象化表现。典型的虚拟化包括如下一些情况:屏蔽系统的复杂性,增加或集成新的功能,仿真、整合或分解现有的服务功能等。虚拟化是作用在一…

虚拟化存储技术

文章目录 前言一、HCLA存储技术趋势与智能存储组件1、HCLA存储技术趋势(1)、什么是数据存储(2)、数据存储系统(3)、数据分类(4)、数据存储发展趋势小结 2、智能存储组件控制框硬盘框…

【KALI网络安全】DNS攻击(劫持和欺骗)与网络钓鱼的模拟和预防(1)

1、DNS概述 关于DNS的定义,作用,分类以及工作原理,博主已在【Windows Server 2019】DNS服务器的配置与管理——理论】这篇博客中陈述过。 要预防DNS劫持,必须了解它的攻击原理和过程 声明 本博客不是在向大家展示这些攻击的方法…