当前位置: 首页 > news >正文

图形用户界面-GUI的基本概念和组件之一

前言

        GUI(Graphical User Interface,图形用户界面,简称图形界面)编程实际是引用java.awt或javax.swing类包中的窗口类、控制组件类、布局类、事件类等,通过将控制组件类,如菜单、按钮、文本框等,直接或间接添加到窗口中,通过鼠标即可进行操作的图形化界面设计方法。
java.awt类包是抽象窗口工具包(即AWT),通过调用本地系统实现显示窗口的功能。javax.swing类包是在AWT基础上建立的一套图形界面系统,习惯上称其为Swing包。Swing包是JFC(Java Foundation Classes)的一部分,提供了从按钮到表格的所有可视化组件。Swing对AWT中组件作了重新定义,为区别于原AWT组件,所有在Swing中声明的组件的名称前面都加一个字母J。

Swing组件层次结构图               

Swing组件层次结构示意图        

一、容器类组件 

  • JFrame类(顶层容器)的常用方法及常量

Dimension类的常用方法及常量

  • JPanel类(中间容器)的常用方法

二、普通可视化组件

 1、标签组件JLabel

标签对象以显示文字信息为主,文字格式、字体等通过Font类的对象设置。

2、 文本框组件JTextField

        文本框组件是用于输入单行文本内容的组件,又被称为单行文本组件。它是TextComponent(文本组件)的子类。TextComponent类提供了多种方法,包括文本选择、设置、编辑、插入位置、注册和删除文本监听器等功能。

3、 按钮组件JButton

按钮使最常用的组件之一,常用于提交等操作

4、复选框组件JCheckBox

复选框组件提供一种简单的“开/关”输入设备,单击就选中,再单击一次取消选择,每个复选框旁边有一个文本标签,标识这个复选框的功能。

 举几个代码例子

import javax.swing.*;
import java.awt.*;public class Main {public static void main(String[] args) {//1、创建顶级容器对象JFrame newWin = new JFrame("汽车租赁系统");newWin.setSize(400,500);//设置窗口大小newWin.setLocation(500,300);//设置窗口显示左上角的位置newWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口关闭操作newWin.setVisible(true);//使窗口显示//或者newWin.show();也可以使窗口显示//2、创建JPanel中间容器JPanel panelObj = new JPanel();panelObj.setBackground(Color.orange);//设置窗口背景颜色为橙色//3、创建标签对象JLabel labelObj = new JLabel("用户账号:");labelObj.setFont(new Font("楷书",Font.BOLD,20));//设置字体labelObj.setForeground(Color.black);//设置字体颜色//4、创建JTextField对象JTextField textField = new JTextField(20);textField.setHorizontalAlignment(JTextField.RIGHT);//设置字体的文本格式//5.创建JButton对象//JButton button = new JButton("登录");//6、根据包含与被包含的顺序,将基本组件对象添加到中间容器中,再将中间容器添加到顶层容器中panelObj.add(labelObj);panelObj.add(textField);//panelObj.add(button);newWin.add(panelObj);}
}

运行结果:

 


从前面几个例子来看,可视化组件的加载顺序是:先加载普通可视化组件,如JLabel、JTextField、JButton,实例化后添加到JPanel对象中,再将JPanel对象再添加到JFrame对象中。

http://www.lryc.cn/news/460401.html

相关文章:

  • 【MATLAB代码】基于RSSI原理的蓝牙定位程序(N个锚点、三维空间),源代码可直接复制
  • Pyenv 介绍和安装指南 - Ubuntu 24
  • zookeeper实现RMI服务,高可用,HA
  • 通过Express + Vue3从零构建一个用户认证与授权系统(一)项目结构设计
  • JavaScript 第13章:Ajax 与异步请求
  • 速卖通商品详情接口技术解析及Python代码示例
  • 邻接表的有向网(C语言代码)
  • 大模型生成PPT大纲优化方案:基于 nVidia NIM 平台的递归结构化生成
  • MRSO算法(JCR2区)
  • 最新Spring Boot3框架入门教程,基础知识讲解(参考官方文档),同时基于MybatisPlus+MYSQL搭建后台管理系统基础流程(附源码)
  • 导数的概念及在模型算法中的应用
  • 获取首日涨停封盘后第二次交易日上涨/下跌的概率
  • shell $ 用法
  • 如何用支付宝实现靠脸吃饭
  • Visual Studio的实用调试技巧总结
  • graphrag学习总结
  • 专题:贪心算法(已完结)
  • Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式
  • JavaScript将array数据下载到Excel中
  • 【前端】Bootstrap:快速开始
  • 文献阅读(222) VVQ协议死锁
  • Node.js管理工具NVM
  • 云原生后端
  • 充电宝哪个品牌值得买?2024年五款靠谱充电宝推荐
  • YOLOv11对比YOLOV8网络结构变化分析,帮助你真正的理解和学习yolo框架
  • 弃用RestTemplate,RestClient真香!
  • electron-vite_10electron-updater软件更新
  • React native之全局变量存储AsyncStorage
  • 获取vue实例
  • 基于Python实现电影推荐系统