JavaAwtSwing用 GridBagLayout GridBagConstraints 居中

JavaAwtSwing用 GridBagLayout GridBagConstraints 居中

GridBag单行单列居中JLabel
import java.awt.*;
import java.awt.event.*;import javax.swing.*;public class GridBag单行单列居中JLabel {static JFrame frame = new JFrame(Thread.currentThread().getStackTrace()[1].getClassName());static GridBagLayout frameGbl = new GridBagLayout();static GridBagConstraints frameGbc = new GridBagConstraints();static {frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent ev) {System.exit(0);}});frame.setBounds(100, 100, 1024, 768);frame.setLayout(frameGbl);}static JLabel jlb = new JLabel("""<html><style>#div001{ padding:50px 25px; }.c1{font-size:16px; color:blue;}</style><div id="div001" style="background:red; "><center class=c1 >JLabel</center><center class=c1 >内部文字Html区域居中</center><center class=c1 >setHorizontalAlignment(JLabel.CENTER);</center><center class=c1 >setVerticalAlignment(JLabel.CENTER);</center></div></html>""");static {jlb.setOpaque(true);jlb.setBackground(Color.DARK_GRAY);jlb.setHorizontalAlignment(JLabel.CENTER);jlb.setVerticalAlignment(JLabel.CENTER);GridBagLayout gbl = frameGbl; GridBagConstraints gbc = frameGbc;// 将布局设为一列一行, 如果不设定, 在只加入一个子组件时也会自动变为一列一行, 但是没有高宽, 即便fill=BOTH,由于网格的高宽为0,子组件依然是原始大小gbl.columnWidths = new int[] {600};  // 网格宽度gbl.rowHeights = new int[] {400};    // 网格高度gbc.fill = GridBagConstraints.BOTH;  // 横纵拉伸为和网格一样的宽高, 就可以用 columnWidths 和 rowHeights 来设定子组件的宽高frame.add(jlb, gbc);// 注意: 此时布局大小只是整个Button的大小,并不是容器的大小, 居中是因为容器的默认, 而不是 anchor 属性默认值的作用}public static void main(String...arguments)throws Exception{frame.setVisible(true);}
}

在这里插入图片描述




GridBag三行三列居中JLabel
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class GridBag三行三列居中JLabel {static JFrame frame = new JFrame(Thread.currentThread().getStackTrace()[1].getClassName());static GridBagLayout frameGbl = new GridBagLayout();static GridBagConstraints frameGbc = new GridBagConstraints();static {frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent ev) {System.exit(0);}});frame.setBounds(100, 100, 1024, 768);frame.setLayout(frameGbl);}static JLabel jlb = new JLabel("""<html><style>#div001{  padding:50px 25px;  }.c1{font-size:16px; color:blue;}</style><div id="div001" style="background:red; "><center class=c1 >JLabel</center><center class=c1 >内部文字Html区域居中</center><center class=c1 >setHorizontalAlignment(JLabel.CENTER);</center><center class=c1 >setVerticalAlignment(JLabel.CENTER);</center></div></html>""");static {jlb.setOpaque(true);jlb.setBackground(Color.DARK_GRAY);jlb.setHorizontalAlignment(JLabel.CENTER);jlb.setVerticalAlignment(JLabel.CENTER);GridBagLayout gbl = frameGbl; GridBagConstraints gbc = frameGbc;// 将布局设为一列一行, 如果不设定, 在只加入一个子组件时也会自动变为一列一行, 但是没有高宽, 即便fill=BOTH,由于网格的高宽为0,子组件依然是原始大小gbl.columnWidths = new int[] {9999,600,9999};  // 网格宽度, 设置3列, 只要左右相等,就能居中,即便总数超过容器宽度gbl.rowHeights = new int[] {666,400,666};    // 网格高度, 设置3列, 只要左右相等,就能居中,即便总数超过容器高度gbc.fill = GridBagConstraints.BOTH;  // 横纵拉伸为和网格一样的宽高, 就可以用 columnWidths 和 rowHeights 来设定子组件的宽高gbc.gridx=1; gbc.gridy=1;  // 放到中间格(横竖第二格),索引从0开始,所以第二格的索引号是1gbc.anchor = GridBagConstraints.WEST;frame.add(jlb, gbc);}public static void main(String...arguments)throws Exception{frame.setVisible(true);}}

在这里插入图片描述




GridBag单行单列居中JButton

import java.awt.*;
import java.awt.event.*;import javax.swing.*;public class GridBag单行单列居中JButton {static JFrame frame = new JFrame(Thread.currentThread().getStackTrace()[1].getClassName());static GridBagLayout frameGbl = new GridBagLayout();static GridBagConstraints frameGbc = new GridBagConstraints();static {frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent ev) {System.exit(0);}});frame.setBounds(100, 100, 800, 600);frame.setLayout(frameGbl);}static JButton jbt = new JButton("jbt001");static {GridBagLayout gbl = frameGbl; GridBagConstraints gbc = frameGbc;// 将布局设为一列一行, 如果不设定, 在只加入一个子组件时也会自动变为一列一行, 但是没有高宽, 即便fill=BOTH,由于网格的高宽为0,子组件依然是原始大小gbl.columnWidths = new int[] {300};  // 网格宽度gbl.rowHeights = new int[] {100};    // 网格高度gbc.fill = GridBagConstraints.BOTH;  // 横纵拉伸为和网格一样的宽高, 就可以用 columnWidths 和 rowHeights 来设定子组件的宽高frame.add(jbt, gbc);// 注意: 此时布局大小只是整个Button的大小,并不是容器的大小, 居中是因为容器的默认, 而不是 anchor 属性默认值的作用}public static void main(String...arguments)throws Exception{frame.setVisible(true);}}

在这里插入图片描述




GridBag三行三列居中JButton
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class GridBag三行三列居中JButton {static JFrame frame = new JFrame(Thread.currentThread().getStackTrace()[1].getClassName());static GridBagLayout frameGbl = new GridBagLayout();static GridBagConstraints frameGbc = new GridBagConstraints();static {frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent ev) {System.exit(0);}});frame.setBounds(100, 100, 1024, 768);frame.setLayout(frameGbl);}static JButton jbt = new JButton("""<html><style>#div001 center{font-size:20px; color:blue; }</style><div id="div001" style="background:yellow; padding:30px; "><center style="font-size:20px; color:black;" >用</center><center>GridBagLayout</center><center>GridBagConstraints</center><center style="font-size:40px; color:black;" >居中</center><center  >黄色的是HTML区域</center></div></html>""");static {GridBagLayout gbl = frameGbl; GridBagConstraints gbc = frameGbc;// 将布局设为一列一行, 如果不设定, 在只加入一个子组件时也会自动变为一列一行, 但是没有高宽, 即便fill=BOTH,由于网格的高宽为0,子组件依然是原始大小gbl.columnWidths = new int[] {9999,400,9999};  // 网格宽度, 设置3列, 只要左右相等,就能居中,即便总数超过容器宽度gbl.rowHeights = new int[] {666,400,666};    // 网格高度, 设置3列, 只要左右相等,就能居中,即便总数超过容器高度gbc.fill = GridBagConstraints.BOTH;  // 横纵拉伸为和网格一样的宽高, 就可以用 columnWidths 和 rowHeights 来设定子组件的宽高gbc.gridx=1; gbc.gridy=1;  // 放到中间格(横竖第二格),索引从0开始,所以第二格的索引号是1gbc.anchor = GridBagConstraints.WEST;frame.add(jbt, gbc);}public static void main(String...arguments)throws Exception{frame.setVisible(true);}}

在这里插入图片描述










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

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

相关文章

C语言与人生:数组交换和二分查找

少年们&#xff0c;大家好。我是博主那一脸阳光&#xff0c;今天和分享数组交换和二分查找。 前言&#xff1a;探索C语言中的数组交换操作与二分查找算法 在计算机编程领域&#xff0c;特别是以C语言为代表的低级编程语言中&#xff0c;对数据结构的理解和熟练运用是至关重要的…

junit单元测试Mock

在平常工作&#xff0c;经常会用到单元测试&#xff0c;那么单元测试应该怎么写呢&#xff1f; 1&#xff1a;引入包&#xff1a; <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><…

低成本TB级数据库技术选型之思考两三点

一、背景 前段时间在搞毕业论文的选题&#xff0c;最头疼的就是大量的文献检索和阅读&#xff0c;从研究的角度上我们可以将文献分为四类&#xff1a; 理论文献&#xff1a;为研究提供理论的框架和基础的文献。这些文献可能并不会和所做的研究直接相关&#xff0c;甚至由于理…

【2023】hadoop基础介绍

&#x1f4bb;目录 Hadoop组成HDFSHDFS操作HDFS分布式文件存储NameNode元数据数据读写流程 YARN和MapReduceMapReduce&#xff1a;分布式计算YARN&#xff1a;资源管控调度YARN架构提交任务到**YARN中运行** Hadoop组成 hadoop安装教程可以看我这篇文章> &#x1f345;hado…

RFC7636-PKCE

前言 PKCE &#xff08;RFC 7636&#xff09; 是授权代码流的扩展&#xff0c;用于防止 CSRF 和授权代码注入攻击。 PKCE 不是客户端身份验证的一种形式&#xff0c;PKCE 不能替代客户端密码或其他客户端身份验证。即使客户端使用客户端密码或其他形式的客户端身份验证&#…

03.QT命名规范及快捷键(部分)

一、命名规范 1.类名 大驼峰规则&#xff1a;首字母大写&#xff0c;单词和单词之间首字母大写。 2.变量名 小驼峰规则&#xff1a;首字母小写&#xff0c;单词和单词之间首字母大写。 二、快捷键 1.代码操作相关 注释&#xff1a;ctrl / 运行&#xff1a;ctrl r 编译…

从入门到精通UNet: 让你快速掌握图像分割算法

文章目录 一、UNet 算法简介1.1 什么是 UNet 算法1.2 UNet 的优缺点1.3 UNet 在图像分割领域的应用 二、准备工作2.1 Python 环境配置2.2 相关库的安装 三、数据处理3.1 数据的获取与预处理3.2 数据的可视化与分析 四、网络结构五、训练模型5.1 模型训练流程5.2 模型评估指标5.…

redis 三主六从高可用docker(不固定ip)

redis集群(cluster)笔记 redis 三主三从高可用集群docker swarm redis 三主六从高可用docker(不固定ip) 此博客解决&#xff0c;redis加入集群后&#xff0c;是用于停掉后重启&#xff0c;将nodes.conf中的旧的Ip替换为新的IP&#xff0c;从而达到不会因为IP变化导致集群无法…

【递归、搜索与回溯】综合练习

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;找出所有子集的异或总和再求…

音阶是音乐理论的基本概念之一

音阶是音乐理论的基本概念之一&#xff0c;它是一组按照音高顺序排列的音。不同类型的音阶有不同的音阶结构。在西方音乐中&#xff0c;最常见的是大调音阶和小调音阶。下面是这两种音阶的基本构成&#xff1a; 大调音阶&#xff08;Major Scale&#xff09;&#xff1a; 大调音…

[Python]两个杯子取水问题

利用两个杯子巧取三升水&#xff1a; 今天的这个趣味数学小游戏是利用两个没有刻度的水杯&#xff0c;巧妙地取出三升水来。 题目的条件是&#xff1a;一个总容量为6升的杯子和一个总容量为5升的杯子&#xff0c;同时面前有无限容量的水供你使用。不借助其它任何的容器&#xf…

just recode for myself 统计大模型SFT的结果与version2中text的结果bad case

问题描述&#xff1a; 利用Qwen大模型进行SFT (lora)。将生成的结果与version2版本下的中文test.txt进行bad case分析 代码实现&#xff1a; from tqdm import tqdm, trange import os import re from typing import List import json from pdb import set_trace as stoppip…

测试新字符设备驱动代码

一. 简介 上一篇文章编写了新字符设备驱动框架的代码&#xff0c;并编写了 LED灯IO初始化工作&#xff0c;也编写了Led的开与关函数。文章地址如下&#xff1a; 向新字符设备驱动代码框架中添加Led功能函数-CSDN博客 本文对所完成的新字符设备驱动代码进行测试。通过测试程…

12、高可用性

什么是高可用性 高可用性不是绝对的&#xff0c;只有相对更高的可用性。百分之百的可用性是不可能达到的。可用性的定义不仅仅包括服务正在运行的时间段&#xff0c;还包括应用是否能以足够好的性能处理请求。 导致宕机的原因 在运行环境的问题中&#xff0c;最普通的问题是…

7-1 sdut-Collection-sort--C~K的班级(II)--笔记篇

题目 经过不懈的努力&#xff0c;CXK终于当上了班主任。 现在他要统计班里学生的名单&#xff0c;但是CXK在教务系统中导出班级名单时出了问题&#xff0c;发现会有同学的信息重复&#xff0c;现在他想把重复的同学信息删掉&#xff0c;只保留一个&#xff0c; 但是工作量太大…

LeetCode 热题 100——283. 移动零

283. 移动零 提示 简单 2.3K 相关企业 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,…

使用anaconda创建notebook工程

1.由于每个工程使用的环境都可能不一样&#xff0c;因此一个好的习惯就是不同的工程都创建属于自己的环境&#xff0c;在anaconda中默认的环境是base&#xff1a; //括号中名字&#xff0c;代表当前的环境 (base)dragonmachine: $ conda create --nameexample2.激活环境 // 环…

伺服电机:电子齿轮比

电子齿轮比的概念 位置控制模式下&#xff0c;输入的位置指令是对负载位移进行设定&#xff0c;而电机的位置指令是编码器单位&#xff0c;是对电机的位移进行进行设定&#xff0c;电机位置指令与输入位置指令的比例就是电子尺齿轮比。 输入的位置指令&#xff0c;所对应的位…

JVM内存区域与常见问题

内存结构 这里先以JDK1.8 hotspot垃圾收集器为例&#xff0c;讲讲每块区域存储的数据以及可能会抛的异常。 堆 存放对象实例&#xff0c;会出现内存溢出或内存泄露等情况。 栈 一次方法调用会产生一个栈帧&#xff0c;如果出现递归死循环调用栈空间满了&#xff0c;会出现…

【全网首发】洛谷贪心题解集合

贪心 1.P2240 【深基12.例1】部分背包问题 【深基12.例1】部分背包问题 - 洛谷 思路 万不要被题目给误导了&#xff0c;这道题是贪心。 所有金币都可以分开&#xff0c;也就是说只要按照性价比最高的取一定得到的价值最大。 性价比就是这堆金币的价值除以重量。 只需要把…