Java详解:GUI容器组件 | 功能组件

 ✎ 简介:

Graphical User Interface(GUI)图形用户界面

图形界面对于用户来说在视觉上更易于接受.

✎ 关于swing:

• swing是一个为java设计的GUI工具包javax.swing,包括了用户界面的各种组件.

• swing中组件可以分为两大类:

         容器组件  ( 窗口、面板、对话框 )

         功能组件  ( 按钮、菜单 )


容器组件

📌窗口(JFrame)
//继承JFrame类
public class FrameDesign extends JFrame {//设置操作必须写在构造方法中public FrameDesign() {this.setSize(400, 400);//设置窗口大小this.setTitle("登录界面");           //设置标题this.setLocationRelativeTo(null);   //居中位置this.setResizable(false);           //设置窗口不可调整大小this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口并退出程序运行this.setVisible(true);              //让窗口显示出来(放在设置最后一行)}public static void main(String[] args) {new FrameDesign();//创建FrameDesign类对象}
}

📖 代码解释:

 ⑴  首先我们创建一个类并继承JFrame类 ,JFrame类用来创建窗体.

 ⑵  创建类的构造方法 ,在构造方法中对窗口进行设置.

设置窗口的常用方法:

void setSize(int width, int height)                 设置窗口大小

void setVisible(boolean b)                    设置是否可见(通常为可见, 且放在设置的最后一行)

void setTitle(String title)                               设置标题

void setResizable(boolean resizable)            设置窗口是否可调整大小(通常为不可调整)

void setLocation(int x,int y)                             设置窗口位置(不常用, 通常使用居中)

void setLocationRelativeTo(null)                     窗口居中 (常用)

void setDefaultCloseOperation(int operation)             设置窗口的关闭操作(通常设置为关闭窗口并退出程序运行,即JFrame.EXIT_ON_CLOSE

运行结果:

📌面板(JPanel)

• 创建一个面板并上色        ( 面板为轻量级容器,需在窗口基础之上添加 ) 

        JPanel panel =new JPanel();//创建面板panel.setBackground(Color.CYAN);//设置背景this.add(panel);//将面板添加到窗口中

 

• 我们还可以通过new Color的方式自定义颜色


📖 面板为轻量级的容器且面板可以布局.

布局方式分为三大类:

   • FlowLayout(流式布局)      • BorderLayout(边界布局)         • GridLayout(网格布局)


流式布局 FlowLayout

    •  流式布局也是默认的布局方式 ,组件在面板上从左到右,从上到下排列.

    •  流式布局默认水平居中且不影响组件大小.

📖 代码解释

面板是轻量级的容器,所以需要添加到窗口上,我们创建面板(JPanel)后,通过创建5个按钮组件来体验下不同的布局方式的效果。

import javax.swing.*;
import java.awt.*;//继承JFrame类
public class FrameDesign extends JFrame {//设置操作必须写在构造方法中public FrameDesign() {this.setSize(400, 400);//设置窗口大小this.setTitle("登录界面");           //设置标题this.setLocationRelativeTo(null);   //居中位置this.setResizable(false);           //设置窗口不可调整大小this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口并退出程序运行JPanel panel =new JPanel(new FlowLayout());JButton button1 =new JButton("按钮1");JButton button2 =new JButton("按钮2");JButton button3 =new JButton("按钮3");JButton button4 =new JButton("按钮4");JButton button5 =new JButton("按钮5");panel.add(button1);panel.add(button2);panel.add(button3);panel.add(button4);panel.add(button5);this.add(panel);//将面板添加到窗口中this.setVisible(true);              //让窗口显示出来(放在设置最后一行)}public static void main(String[] args) {new FrameDesign();//创建FrameDesign类对象}
}

 


边界布局 BorderLayout

    •  共有5个区域(北南东西中) 中间不能少 

    •  若其余(除中间之外)位置没有指明,中间位置的组件会对其进行填充 .

📖 代码解释 :

我们通过改变JPanel构造方法中的布局类型,改为BorderLayout,并且在添加时指明具体的位置(上下左右中),其余代码和上面流式布局代码一样.

 JPanel panel =new JPanel(new BorderLayout());JButton button1 =new JButton("按钮1");JButton button2 =new JButton("按钮2");JButton button3 =new JButton("按钮3");JButton button4 =new JButton("按钮4");JButton button5 =new JButton("按钮5");panel.add(button1,BorderLayout.NORTH);//添加时指明位置panel.add(button2,BorderLayout.SOUTH);panel.add(button3,BorderLayout.WEST);panel.add(button4,BorderLayout.EAST);panel.add(button5,BorderLayout.CENTER);//中间不能省略


网格布局 GridLayout

    •  我们可以对网格的进行行列设置 

📖 代码解释

相比上面的流式布局代码,我们只需改变JPanel构造方法中的布局类型即可(将FlowLayout改为GridLayout),并且我们可以设置网格的行列数.

JPanel panel =new JPanel(new GridLayout(5, 1));//5行1列


                                                          《第二部分》

往往我们的功能组件是添加在面板之上, 所以在介绍功能组件之前,我们需要先创建窗口和面板,再在其基础之上进行修饰和添加功能组件。

import javax.swing.*;
//swing 是一个为Java设计的GUI工具包javax.swing,该包中包括了图形用户界面的各种组件支持。
public class Design extends JFrame {
//在构造方法中设计界面public Design(){this.setSize(450, 400);//设置大小this.setTitle("登录/注册界面");           //设置标题this.setLocationRelativeTo(null);   //居中位置this.setResizable(false);           //窗口大小不可改变this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口就退出程序//创建面板JPanel panel = new JPanel(new FlowLayout());//流式布局/*添加组件*/this.add(panel);//将面板添加到窗口上this.setVisible(true);//窗口可见}public static void main(String[] args) {new Design();}
}

功能组件


 JLable — 标签 

构造函数:

JLabel( )                 创建一个空的标签

JLabel(String text)  创建一个带文本的标签

常用方法:

void setText(String text)  设置标签上的文本

String getText( )              获得标签上的文本

setFont(new Font(“宋体”,Font.BOLD, 18))  设置字体

代码演示: 

        JLabel label = new JLabel("账号");label.setFont(new Font("楷体", Font.BOLD, 20));//设置字体和大小panel.add(label);//添加标签带面板上 

运行结果: 

 

(我们用的是流式布局,默认居中) 

JTextField — 单行文本 

代码演示: 

        JTextField textField = new JTextField();//创建单行文本textField.setText("请输入账号");//设置文本内容textField.setColumns(16);//设置长度panel.add(textField);//将单行文本组件添加到面板

运行结果: 

JPasswordField — 密码框 

代码演示:  

        JPasswordField jPasswordField =new JPasswordField(18);
//转换为字符串,方便以后获取密码String password = new String(jPasswordField.getPassword());panel.add(jPasswordField);

运行结果:  

 

JTextArea — 多行文本框 

代码演示:  

        JTextArea textArea =new JTextArea(13,22);//创建多行文本框(行 列)textArea.setLineWrap(true);//可以换行(水平方向不会向外扩充)textArea.setBackground(new Color(0xC5E5DE));//设置文本框背景色panel.add(textArea);

JScrollPane — 带滚动条面板 

        JScrollPane jScrollPane =new JScrollPane(textArea);//为文本框添加滚动条panel.add(jScrollPane);

运行结果: 

 

JButton — 按钮 

代码演示: 

        JButton button1 =new JButton("登录");//创建按钮(标题)button1.setToolTipText("点击登录");//设置标注(鼠标停滞在按钮上显现)panel.add(button1);JButton button2 =new JButton("注册");button2.setToolTipText("点击注册");panel.add(button2);

运行结果: 


JMenuBar — 菜单栏组件 

//创建菜单栏,来存放菜单,并添加到窗口上JMenuBar jMenuBar =new JMenuBar();this.setJMenuBar(jMenuBar);//把菜单栏加到窗口

JMenu — 菜单组件 

//创建菜单组件,并添加到菜单栏上JMenu jMenu1 =new JMenu("文件");JMenu jMenu2 =new JMenu("编辑");JMenu jMenu3 =new JMenu("帮助");jMenuBar.add(jMenu1);jMenuBar.add(jMenu2);jMenuBar.add(jMenu3);

JMenuItem — 菜单项组件 

//创建菜单项,并添加在菜单上JMenuItem jMenuItem1 =new JMenuItem("新建");JMenuItem jMenuItem2 =new JMenuItem("保存");jMenu1.add(jMenuItem1);//这里我们以文件菜单为例,为其添加菜单项jMenu1.add(jMenuItem2);

此三个功能组件通常搭配一起使用 

运行结果: 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于FPGA的OMEGA东京奥运会计时器

截至2019年共举办了31届奥运会,其中27届的计时设备都由欧米茄(OMEGA,Ω)提供,今年的东京奥运会将会是第28届。 瑞士计时公司(Swiss Timing)基于火星Mars ZX2核心板打造了为奥运会等大型体育赛事…

AWVS+子域名平台联合自动化渗透测试工具(非常详细)零基础入门到精通,收藏这一篇就够了

项目地址 https://github.com/Minority2310/awvs-subdomain_platformawvs-subdomain_platform:AWVS子域名平台联合自动化渗透测试 如有侵权,请联系删除 为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料&#…

PLC程序远程上下载

在工业自动化领域,PLC(可编程逻辑控制器)扮演着至关重要的角色。然而,传统的PLC程序上传与下载方式往往受限于物理距离和现场环境,给工程师们带来了诸多不便。如今,随着远程技术的不断发展,PLC程…

Stable Diffusion XL优化终极指南

如何在自己的显卡上获得SDXL的最佳质量和性能,以及如何选择适当的优化方法和工具,这一让GenAI用户倍感困惑的问题,业内一直没有一份清晰而详尽的评测报告可供参考。直到全栈开发者Flix San出手。 在本文中,Flix介绍了相关SDXL优化…

好用且免费的无需搭梯子的长文本场景对话大模型

这款ai工具最近爆火,Kimi支持200万字无损上下文,在长上下文窗口技术上再次取得突破,引燃人工智能领域新一轮投资热情。我也是支持国货,抱着试一试的心态使用,确实不错, China🐂🍺

【Java开发指南 | 第十三篇】Java条件语句

读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 if 语句if...else 语句if...else if...else 语句嵌套的 if…else 语句switch 语句 Java 中的条件语句用于根据条件来执行不同的代码块。条件语句允许程序根据表达式的结果选择性地执行代码。 条件语句分为if 语…

[Win11·Copilot] Win11 系统更新重启后任务栏 Copilot 图标突然消失 | 解决方案

文章目录 前言Copilot介绍产生异常的原因解决方案总结 前言 在 Windows 11 的最新系统更新之后,一些用户报告了任务栏中 Copilot 图标消失的问题。这篇技术博文将为您提供详细的解决方案,帮助您恢复 Copilot 图标,并确保您能够继续享受 Copi…

3D模型查看器开发实战【WebGL】

本文介绍如何从头开发一个包含3D 模型查看器的页面 - 尽管它非常简单,但你将学习的步骤也应该有助于构建其他类型的 Web 应用程序。 在自己的网站或博客里展示3D模型更简单的方式是使用NSDT 3DConvert提供的在线服务,无需任何开发工作,5分钟…

【小技巧】机器学习中可视化高维向量的两种方法PCA和t-SNE,以及其原理介绍和代码示例(附代码)

使用情景:比如说现在我有一批numpy的多维向量,比如说都是256维度的,X.shape(n, 256), 已知它们都是经过训练能够在256dim的超球面上实现分类或聚类的,现在我想把它们可视化出来看看各个簇在超球面上的分布是怎样的? 1…

陈胜许诺‘苟富贵,勿相忘’的那些工友们,后来都怎么样了?

记得初三语文上册的课文中,有一篇叫《陈涉世家》文章,节选自《史记》,讲述的是秦末农民起义军领袖陈胜吴广的故事。其中陈胜有三句话让人记忆犹新,其中有两句是他在地主家当农民工时,和一起做事的工友说的。第一句话就…

Vue项目实现懒加载——自用笔记

熟悉指令语法&#xff1a; <template><HomePanel title"人气推荐" sub-title"人气爆款 不容错过"><ul class"goods-list"><li v-for"item in hotList" :key"item.id"><RouterLink to"/&qu…

免费学习简单实操,轻松拿下微软生成式AI认证

在这个AI风暴席卷全球的时代&#xff0c;我们都处在一个充满机遇和挑战的交叉点上。无论你是正在寻找新的职业道路&#xff0c;还是希望在现有的职业生涯中取得突破&#xff0c;掌握AI技能都将成为你开启新篇章的关键。 为了帮助更多的人在这个AI时代中实现跨越&#xff0c;微…

网工内推 | 14薪!安全服务工程师,上市公司,CISP认证优先

01 远江盛邦 招聘岗位&#xff1a;安全服务工程师 职责描述&#xff1a; 1、负责对客户网络、系统进行渗透测试&#xff0c;漏洞验证、安全评估和安全加固&#xff1b; 2、负责对监督单位的系统安全问题进行监督&#xff0c;并督察改进&#xff1b; 3、对监管单位的安全告警、…

力扣136. 只出现一次的数字

Problem: 136. 只出现一次的数字 文章目录 题目描述思路复杂度Code 题目描述 思路 由于题目要求使用线性时间复杂度和常量级的空间复杂度&#xff0c;再加上找重复元素这个特性&#xff0c;我们可以想到使用位运算来求解&#xff1a; 1.任何数与其本身异或得0&#xff0c;任何…

HackMyVM-BaseME

目录 信息收集 arp nmap WEB web信息收集 gobuster hydra 目录检索 ssh 提权 get user sudo base64提权 get root 信息收集 arp ┌─[rootparrot]─[~/HackMyVM] └──╼ #arp-scan -l Interface: enp0s3, type: EN10MB, MAC: 08:00:27:16:3d:f8, IPv4: 192.168…

go语言context

context在服务端编程基本都贯穿所有&#xff0c; Context 是请求的上下文信息。对于RPC Server来说&#xff0c;一般每接收一个新的请求&#xff0c;会产生一个新的Context&#xff0c;在进行内部的函数调用的时候&#xff0c;通过传递Context&#xff0c;可以让不同的函数、协…

python二级题目-仅使用 Python 基本语法,即不使用任何模块,编写 Python 程序计算下列数学表达式的结果并输出,小数点后保留 3 位。

x(((3**4)5*(6**7))/8)**0.5 .format 用法一&#xff1a; print({}.format(1)) 1 print(这个是format的用法{}。。。.format(3)) 这个是format的用法3 ’大括号1:{},大括号2:{},大括号3:{}‘.format(3,4,5) print(’大括号1:{},大括号2:{},大括号3:{}‘.form…

牛客小白月赛90(A,B,C,D,E,F)

比赛链接 官方题解&#xff08;视频&#xff09; 这场偏思维&#xff0c;感觉好像没啥算法。E需要动态维护前 k k k 小&#xff0c;F是个离散化加dp&#xff0c;状态和递推方程比较 非常规&#xff0c;建议还是看一下涨涨姿势。 A 小A的文化节 思路&#xff1a; 签到 cod…

hive使用sqoop与oracle传输数据

下载地址 http://archive.apache.org/dist/sqoop 两个版本sqoop1&#xff08;1.4.x&#xff09;和sqoop2&#xff08;1.99.x&#xff09;&#xff0c;两种不同的架构。 本文使用sqoop1。 sqoop是apache旗下一款“hadoop与关系数据库之间传送数据”的工具。 导入数据&#xf…

中仕公考:2024年广东省高校毕业生‘三支一扶‘公告

2024年广东省三支一扶共计划招募3000名左右高校毕业生&#xff0c;服务期限为两年&#xff0c;具体招募岗位和条件可通过广东人事考试网查询。 招考条件&#xff1a; 年龄不超过30周岁(1993年4月22日后出生); 支教岗位须是已取得教师资格证的高校毕业生&#xff0c;支医专业…