JAVA基础之Swing窗体的几种布局

1、边框布局BorderLayout

特点:5个方位(东(East)南(north)西(west)北(south)中(center))

是一种简单的布局策略。

 使用时,应将其看成一个“组件”。    

同样,首先应通过构造器创建布局管理器对象,再通过引用其中的方法和变量来对组件进行布局。 表

2.2 BorderLayout布局管理器的构造器

书写案例:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class LayoutDemo3 extends JFrame{
	
	//要求:实例化对象操作放在类的里面,方法的外面(目的:使该对象能够具有最大权限化)
	//1.实例化一个JPanel容器
	private JPanel jpa = new JPanel();
	
	//实例化一个边框布局的对象
	private BorderLayout bl = new BorderLayout();
	
	//按钮
	private JButton jba = new JButton("菠萝");
	private JButton jbb = new JButton("香蕉");
	private JButton jbc = new JButton("香橙");
	private JButton jbd = new JButton("香瓜");
	private JButton jbe = new JButton("西瓜");
	
	public LayoutDemo3() {
		this.setTitle("布局案例");
		this.setSize(400, 400);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);
		
		//设置容器的布局方式----边框布局
		jpa.setLayout(bl);
		jpa.add(jba,"North");
		jpa.add(jbb,BorderLayout.SOUTH);
		jpa.add(jbc,BorderLayout.EAST);
		jpa.add(jbd,BorderLayout.WEST);
		jpa.add(jbe,BorderLayout.CENTER);
		
		
		
		//2.将容器添加到窗体面板上
		this.getContentPane().add(jpa);
		this.setVisible(true);
	}
	
}

2.FlowLayout流式布局

特点:加入空间默认居中显示,如果再次加入,从左往右扩充,一行显示不了,会跨行默认中间显示

书写案例:

import java.awt.Color;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class LayoutDemo extends JFrame{
	
	//要求:实例化对象操作放在类的里面,方法的外面(目的:使该对象能够具有最大权限化)
	//1.实例化一个JPanel容器
	private JPanel jpa = new JPanel();
	//private JPanel jpb = new JPanel();
	
	//实例化一个流式布局的对象
	private FlowLayout fl = new FlowLayout();
	
	//按钮
	private JButton jba = new JButton("我是按钮1");
	private JButton jbb = new JButton("我是按钮2");
	private JButton jbc = new JButton("我是按钮3");
	private JButton jbd = new JButton("我是按钮4");
	private JButton jbe = new JButton("我是按钮5");
	
	public LayoutDemo() {
		this.setTitle("布局案例");
		this.setSize(400, 400);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);
		
		//设置2个容器的背景颜色
		jpa.setBackground(Color.pink);
		//jpa.setSize(400, 200);
		//jpb.setBackground(Color.green);
		
		//设置jpa容器的布局方式----流式布局
		jpa.setLayout(fl);
		jpa.add(jba);
		jpa.add(jbb);
		jpa.add(jbc);
		jpa.add(jbd);
		jpa.add(jbe);
		
		
		//2.将容器添加到窗体面板上
		this.getContentPane().add(jpa);
		//this.getContentPane().add(jpb);
		this.setVisible(true);
	}
	
}
BorderLayout和FlowLayout结合方法

所有组件均“依次排列,没有如同BorderLayout布局管理器那样有5个不同的方位。    

可以将BorderLayout布局管理器和FlowLayout布局管理器相结合给出一个实例。    

思路:将FlowLayout布局管理器同顶层容器关联,然后在其中添加5个BorderLayout布局管理器,并在这5个布局管理器中添加组件。

◆ 代码主要是将FlowLayout布局管理器同顶层容器相关联,    然后再在其中添加5个布局管理器的内容面板;

◆ 为每一个内容面板添加5个组件,并按照BorderLayout布    局管理方式排列组件。

图像大致为:

3.GridLayout网格布局

特点:类似Excel表格,几行几列(实例化时,2个参数)

布局管理器类似“围棋盘”,将整个布局空间划分成若干行列相乘的“网格区域”,组件就位于这些小区域内。    

要创建一个GridLayout布局管理器,必须通过其构造器来创建GridLayout布局管理器对象。

样式

GridLayout、BorderLayout、FlowLayout布局管理器相结合进行组件布局的方法

思路:用GridLayout布局管理器与顶层窗口关联,在这个布局管理器中添加FlowLayout布局管理器和BorderLayout布局管理器,最后在这些布局管理器中添加控件。

◆ 首先,用GirdLayout布局管理器与顶层窗口关联;

◆ 其次,在GridLayout中添加FlowLayout布局管理器和BorderLayout布局管理器;

◆ 最后,在这些(Flow&Border)布局管理器中添加控件。

书写案例:

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class LayoutDemo2 extends JFrame{
	
	//要求:实例化对象操作放在类的里面,方法的外面(目的:使该对象能够具有最大权限化)
	//1.实例化一个JPanel容器
	private JPanel jpa = new JPanel();
	
	//实例化一个网格布局的对象
	private GridLayout gl = new GridLayout(3, 3);
	
	//按钮
	private JButton jba = new JButton("菠萝");
	private JButton jbb = new JButton("香蕉");
	private JButton jbc = new JButton("香橙");
	private JButton jbd = new JButton("香瓜");
	private JButton jbe = new JButton("西瓜");
	private JButton jbf = new JButton("哈密瓜");
	private JButton jbg = new JButton("榴莲");
	private JButton jbh = new JButton("百香果");
	private JButton jbi = new JButton("黑凤梨");
	
	public LayoutDemo2() {
		this.setTitle("布局案例");
		this.setSize(400, 400);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);
		
		//设置容器的布局方式----网格布局
		jpa.setLayout(gl);
		jpa.add(jba);
		jpa.add(jbb);
		jpa.add(jbc);
		jpa.add(jbd);
		jpa.add(jbe);
		jpa.add(jbf);
		jpa.add(jbg);
		jpa.add(jbh);
		jpa.add(jbi);
		
		
		
		//2.将容器添加到窗体面板上
		this.getContentPane().add(jpa);
		this.setVisible(true);
	}
	
}
4.GridBagLayout网袋布局

特点:根据坐标设置控件的位置

◆ 网格包由多个网格组成,且各行、列的长度和宽度不同。但在默认情    况下,单元格从左上角开始有序列编号,从第0行、第0列开始计数。

◆ 当向GridBagLayout中添加组件时,需分别定义每个单元格的序列号,    只要设定相应的值,组件就会添加到网格包布局管理器中。

◆ 组件被添加到什么位置有4个参数,分别是gridX、gridY、gridwidth    、gridheight。    

其中:gridX、gridY---定义添加组件时左上角的行与列的位置;    

          gridwidth、gridheight---定义组件所占用的列数和行数。

书写案例:

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class LayoutDemo4 extends JFrame {

	// 1.实例化一个JPanel容器
	private JPanel jpa = new JPanel();
	// 实例化一个网袋布局对象
	private GridBagLayout gbl = new GridBagLayout();
	// 注意:网袋布局对象不能直接设置坐标,而是根据网袋布局的约束对象去约束(设置)控件的坐标
	// 实例化网袋布局约束对象
	private GridBagConstraints gbc = new GridBagConstraints();

	// 账号文本标签对象
	private JLabel jla = new JLabel("账号");
	// 普通文本输入框
	private JTextField jtfa = new JTextField(15);
	// 密码文本标签对象
	private JLabel jlb = new JLabel("密码");
	// 密码文本框对象
	private JPasswordField jpfa = new JPasswordField(15);

	public LayoutDemo4() {
		this.setTitle("布局案例");
		this.setSize(400, 400);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);

		// 设置容器的布局方式(网袋布局)
		jpa.setLayout(gbl);

		// 设置账号的文本标签坐标
		gbc.gridx = 0;
		gbc.gridy = 0;
		// 将该坐标设置给JLabel账号标签
		gbl.setConstraints(jla, gbc);
		// 将设置好的jla添加到容器中
		jpa.add(jla);

		// 设置普通文本框的坐标(jtfa)
		gbc.gridx = 1;
		gbc.gridy = 0;
		// 将该坐标设置给jtfa文本框对象
		gbl.setConstraints(jtfa, gbc);
		// 将设置好的jtfa组件添加到容器中
		jpa.add(jtfa);

		// 设置密码文本框的坐标(jlb)
		gbc.gridx = 0;
		gbc.gridy = 1;
		// 将该坐标设置给jlb密码文本框对象
		gbl.setConstraints(jlb, gbc);
		// 将设置好的jlb组件添加到容器中
		jpa.add(jlb);

		// 设置密码文本框的坐标(jpfa)
		gbc.gridx = 1;
		gbc.gridy = 1;
		// 将该坐标设置给jpfa密码文本框对象
		gbl.setConstraints(jpfa, gbc);
		// 将设置好的jpfa组件添加到容器中
		jpa.add(jpfa);

		// 2.将容器添加到窗体面板上
		this.getContentPane().add(jpa);
		this.setVisible(true);
	}

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VMware worksation 17 简易安装Centos8.2、Redhat8.2、Ubuntu16.04

系列文章目录 文章目录 系列文章目录前言一、VMware worksation 17 安装二、安装Centos8.2三、安装RHEL8.2四、安装Ubuntu16.04总结 前言 傻瓜式按照Linux系统,如果觉得简单,可以自定义设置,特别是配置一下磁盘空间大小,对以后排…

通过DataGrip将mysql表结构信息转存excel 复制select结果的insert插入语句

各位小伙伴们大家好,欢迎来到这个小扎扎的专栏 总结 | 提效 | 拓展,在这个系列专栏中记录了博主在学习期间总结的大块知识点,以及日常工作中遇到的各种技术点 ┗|`O′|┛ 🌆 内容速览 1 查询表结构信息,并…

我希望未来10年,人工智能可以帮我解决这4件小事

生活在一线大城市的我,现在几乎整天被大数据、人工智能、机器学习、智慧生活的词汇环绕立体包围着,让我时刻感觉到,再过10年,我们五一假期真的可以摆脱现在擦肩接踵的旅游盛况了。但我其实要求倒是没这么高,我真心希望…

AnaTraf 网络流量分析仪 - 网络性能检测与诊断(NPMD)

目录 网络流量回溯分析,快速定位故障 实时监控,洞察网络运行状况 性能分析,优化网络应用 即插即用,无需复杂配置 了解更多 近年来,随着互联网技术的不断发展,网络已经成为企业运营的基础设施。然而,复杂多变的网络环境也给企业的网络管理带来了新的挑战。如何快…

一部手机就能实现24小时AI实景自动无人直播:商业推广拓客进击的全新推广利器

随着科技的迅猛发展,AI实景自动无人直播软件正逐渐成为商家拓展业务的重要工具。其智能讲解、一键开播以及智能回复功能,使得商家能够高效地进行推广活动,而手机拍摄真实场景和自行搭建场景的灵活性,则赋予了直播画面更好的呈现效…

地下管线管网三维参数化建模软件MagicPipe3D V3.5

经纬管网建模系统MagicPipe3D(www.magic3d.net)自主安全可控,本地离线参数化构建三维管网模型(管道、接头、附属物等),输出标准3DTiles、Obj等格式,支持Cesium、Unreal、Unity等引擎可视化查询分…

10最佳数据恢复软件,用于恢复丢失的数据

有时,您无意中、无意识地或其他人故意删除了您重要且有价值的数据,这些数据可以是文档、视频或图片。或者由于某些令人毛骨悚然的软件,数据可能已损坏。避免这种令人痛苦的时刻的最好方法是定期备份您的数据,但以防万一。那该怎么…

使用XPTable控件展示多窗口数据(XPTable控件使用说明七)

我给我的应用程序找到一个新的能力,因为有DEMO程序界面有6个窗口,我使用了2个显示器,一起来显示。

Carla基础 | Carla预编译版安装与ROS联合仿真图文教程

目录 1 什么是Carla?2 Carla预编译版安装2.1 独立显卡配置2.2 安装ROS2.3 启动虚拟环境2.4 安装Carla预编译版2.5 安装carla-ros-bridge 3 测试案例常见问题 1 什么是Carla? Carla是由西班牙巴塞罗那自治大学计算机视觉中心指导开发的开源仿真模拟器&…

项目管理-项目沟通管理

项目管理:每天进步一点点~ 活到老,学到老 ヾ(◍∇◍)ノ゙ 何时学习都不晚,加油 1.项目沟通管理-主要内容 项目沟通管理过程--重点: ①ITTO 输入,输出工具和技术。 ②问题和解决方案。 ③论文…

爆火4年后,露营的风还能吹多久? | 最新快讯

五一假期你去露营了吗? 文 | 趣解商业,作者 | 刘亮 “不是说露营不火了吗?为何订个营地如此困难?”江女士疑惑地说,她原本计划“五一”期间带家人前往浙江安吉游玩,但早在4月中旬咨询时就已经无法预约。 露…

构造,CF989C. A Mist of Florescence

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 989C - Codeforces 二、解题报告 1、思路分析 题目让构造网格图…

学术咸鱼入门指南(1)

学术基础素养 一.巧用工具管理文献,形成自己的文献体系 养成习惯的第一步:文献命名 当你下载完一篇文献,应该做的第一步就是给文献重新命名。命名的逻辑可以随自己的喜好来,可以按照“发表年份作者文章标题”。 也可以使用文献…

hadoop启动后没有namenode,datanode等解决方法

之前用的是虚拟机,在虚拟机上安装的hadoop,但是后来,电脑恢复出厂设置了,什么都重新开始。就在本地安装 Linux 子系统。 但是,有时候start-dfs.sh后,jps出现错误。 像这种拒绝连接 解决办法就是如下&…

​可视化大屏C位图:3D模型,可视化大屏的画龙点睛之处

Hello,我是大千UI工场,本期可视化大屏的焦点图(C位)分享将图表作为焦点图的情形,欢迎友友们关注、评论,如果有订单可私信。 3D模型在可视化大屏中有很大的价值,以下是一些相关的优点&#xff1a…

【平时工作中的各种术语__持续更新~~~~】

中文: 1、jar包 JAR包(Java Archive Package)是一种将多个Java类文件以及与它们相关的元数据和资源(如文本、图片等)打包到一个单一文件中的归档工具。它基于ZIP文件格式。JAR文件主要用于分发和部署Java应用程序。J…

机器学习入门之模型性能评估与度量

文章目录 性能评估误差欠拟合和过拟合模型选择与数据拟合 性能度量二分类的混淆矩阵查全率查准率F1分数 P-R曲线ROC曲线AUC 性能评估 机器学习的模型有很多,我们在选择的时候就需要对各个模型进行对比,这时候就需要一个靠谱的标准,能够评估模…

Redis 实战之RDB文件结构

RDB文件结构 databases 部分key_value_pairs 部分value 的编码字符串对象列表对象集合对象哈希表对象有序集合对象INTSET 编码的集合ZIPLIST 编码的列表、哈希表或者有序集合 总结AOF持久化的实现命令追加 AOF 文件的写入与同步小结 在本章之前的内容中, 我们介绍了…

ChatGPT 4.0 直接用 !!!Code Copilot编程大模型、DALL-E AI绘图、绘制流程图、上传文件

嗨,你好呀,我是哪吒。 这一年最让人揪心的热点,就是各种层出不穷的AI技术。 原以为它只是短暂霸屏,但现实却赤裸裸展示了,什么叫AI抢走你的饭碗,连招呼都不打一声! 什么策划方案、公众号文案、营销卖点、…

计算机网络4——网络层7 VPN 和NAT,MPLS

文章目录 一、虚拟专用网VPN1、介绍2、工作原理 二、网络地址转换1、介绍2、工作原理2、注意事项 三、多协议标签交换MPLS1、介绍2、MPLS 的工作原理1)基本工作过程2)转发等价类 FEC 3、MPLS首部的位置与格式4、新一代的 MPLS 一、虚拟专用网VPN 1、介绍…