Java中三种常用布局方式

引言

在Java Swing和JavaFX中,布局管理器(Layout Managers)用于控制组件(如按钮、文本框等)在容器(如窗口、面板等)内的位置和大小。下面介绍Java Swing中常用的三种布局方式:

1. FlowLayout(流式布局)

  • 特点FlowLayout 是最简单的布局管理器之一,它按照从左到右、从上到下的顺序排列组件。当一行放不下更多的组件时,会自动换行。
  • 适用场景:适用于组件数量不多,且不需要复杂对齐的情况。
  • 示例代码
    import javax.swing.*;
    import java.awt.*;
    
    public class FlowLayoutExample {
        public static void main(String[] args) {
            JFrame frame = new JFrame("FlowLayout Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(300, 200);
    
            // 设置布局管理器为FlowLayout
            frame.setLayout(new FlowLayout());
    
            // 添加组件
            frame.add(new JButton("Button 1"));
            frame.add(new JButton("Button 2"));
            frame.add(new JButton("Button 3"));
    
            // 显示窗口
            frame.setVisible(true);
        }
    }

2. BorderLayout(边界布局)

  • 特点BorderLayout 将容器划分为五个区域:北(North)、南(South)、东(East)、西(West)和中心(Center)。每个区域最多只能放置一个组件。
  • 适用场景:适用于需要在窗口的固定位置放置组件的情况,如标题栏、状态栏等。
  • 示例代码
    import javax.swing.*;
    import java.awt.*;
    
    public class BorderLayoutExample {
        public static void main(String[] args) {
            JFrame frame = new JFrame("BorderLayout Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(300, 200);
    
            // 设置布局管理器为BorderLayout
            frame.setLayout(new BorderLayout());
    
            // 添加组件
            frame.add(new JButton("North"), BorderLayout.NORTH);
            frame.add(new JButton("South"), BorderLayout.SOUTH);
            frame.add(new JButton("East"), BorderLayout.EAST);
            frame.add(new JButton("West"), BorderLayout.WEST);
            frame.add(new JButton("Center"), BorderLayout.CENTER);
    
            // 显示窗口
            frame.setVisible(true);
        }
    }

3. GridLayout(网格布局)

  • 特点GridLayout 将容器划分为一个矩形网格,每个组件占据一个单元格,所有单元格的大小相同。
  • 适用场景:适用于需要将组件均匀分布在一个网格中的情况,如计算器界面。
  • 示例代码
    import javax.swing.*;
    import java.awt.*;
    
    public class GridLayoutExample {
        public static void main(String[] args) {
            JFrame frame = new JFrame("GridLayout Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(300, 200);
    
            // 设置布局管理器为GridLayout,3行3列
            frame.setLayout(new GridLayout(3, 3));
    
            // 添加组件
            for (int i = 1; i <= 9; i++) {
                frame.add(new JButton("Button " + i));
            }
    
            // 显示窗口
            frame.setVisible(true);
        }
    }

总结

  • FlowLayout:简单易用,适合组件较少且不需要复杂对齐的情况。
  • BorderLayout:适用于需要在固定位置放置组件的情况。
  • GridLayout:适用于需要将组件均匀分布在网格中的情况。

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

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

相关文章

【C语言算法】蛇形方阵 暴力破解之(if函数)

文章目录 1. 问题描述2. 题目分析与代码设计3. 代码实现4. 运行效果 1. 问题描述 在n x n(n≤8)方阵里填入1&#xff0c;2&#xff0c;3&#xff0c;…&#xff0c;n x n&#xff0c;要求填成蛇形。 列如 n4 时方阵为&#xff1a; 2. 题目分析与代码设计 算法的步骤和分析&…

从覆盖到拼接:优化 onInput 事件的输入

在使用 ElSelect 组件的 onInput 事件时&#xff0c;由于每次输入都触发搜索&#xff0c;导致请求频繁且新搜索结果覆盖了旧结果&#xff0c;无法实现输入数据的累积搜索。我们希望的是&#xff0c;每次搜索能够将新的输入内容与之前的内容拼接显示&#xff0c;从而实现用户的诉…

Flink四大基石之CheckPoint

1、State Vs Checkpoint State:状态,是Flink中某一个Operator在某一个时刻的状态,如maxBy/sum,注意State存的是历史数据/状态,存在内存中。 Checkpoint:快照点, 是Flink中所有有状态的Operator在某一个时刻的State快照信息/存档信息。 一句话概括: Checkpoint就是State的快照…

如何给GitHub的开源项目贡献PR

&#x1f3af;导读&#xff1a;本文详细介绍了如何向开源项目“代码随想录”贡献自己的题解。首先&#xff0c;需要Fork原项目的仓库至个人GitHub账户&#xff0c;然后解决克隆仓库时可能遇到的SSH密钥问题。接着&#xff0c;按照标准流程对本地仓库进行代码或文档的修改&#…

不可分割的整体—系统思考的微妙法则

不可分割的整体——系统思考的微妙法则 作为企业领导者&#xff0c;我们经常需要做出决策&#xff0c;但有时候&#xff0c;我们会忽略一个事实&#xff1a;每个决策都不是孤立的&#xff0c;它背后都是一个复杂系统的一部分。 无论是市场动态、团队协作&#xff0c;还是产品…

layui-vue第三方库表格列事件怎么写

插槽写入列点击事件 <div class"le-table-box" ref"TableBoxRef" :style"{ height: ShowPage ? calc(100% - 60px) : 100% }"><lay-table row-double"dbRowClick" :columns"TableColumn" :data-source"Table…

第一个 C++ 程序 001

1. main 函数 同 c 语言的 main 函数 2. 字符和字符串 在C的 STL 中⼜引⼊了 string 来表⽰字符串&#xff0c;功能更加强⼤&#xff0c;C 语⾔不⽀持&#xff0c;后期会详细介绍。 其他的和 c 语言类似 3. 头文件 和 C 语言中的头文件一样&#xff0c;相当于一个工具箱 不过…

修改插槽样式,el-input 插槽 append 的样式

需缩少插槽 append 的 宽度 方法1、使用内联样式直接修改&#xff0c;指定 width 为 30px <el-input v-model"props.applyBasicInfo.outerApplyId" :disabled"props.operateCommandType input-modify"><template #append><el-button click…

Hot100 - 搜索二维矩阵II

Hot100 - 搜索二维矩阵II 最佳思路&#xff1a; 利用矩阵的特性&#xff0c;针对搜索操作可以从右上角或者左下角开始。通过判断当前位置的元素与目标值的关系&#xff0c;逐步缩小搜索范围&#xff0c;从而达到较高的效率。 从右上角开始&#xff1a;假设矩阵是升序排列的&a…

杂七杂八的网络安全知识

一、信息安全概述# 1.信息与信息安全# 信息与信息技术 信息奠基人&#xff1a;香农&#xff1a;信息是用来消除随机不确定性的东西 信息的定义&#xff1a;信息是有意义的数据&#xff0c;是一种要适当保护的资产。数据经过加工处理之后&#xff0c;就成为信息。而信息需要…

Vision Transformer(vit)的Embedding层结构

代码&#xff1a; class PatchEmbed(nn.Module):"""2D Image to Patch Embedding"""def __init__(self, img_size224, patch_size16, in_c3, embed_dim768, norm_layerNone):super().__init__()img_size (img_size, img_size) #图像尺寸默认22…

Spring Boot 实战:基于 Validation 注解实现分层数据校验与校验异常拦截器统一返回处理

1. 概述 本文介绍了在spring boot框架下&#xff0c;使用validation数据校验注解&#xff0c;针对不同请求链接的前端传参数据&#xff0c;进行分层视图对象的校验&#xff0c;并通过配置全局异常处理器捕获传参校验失败异常&#xff0c;自动返回校验出错的异常数据。 2. 依赖…

Linux查看网络基础命令

文章目录 Linux网络基础命令1. ifconfig 和 ip一、ifconfig命令二、ip命令 2. ss命令一、基本用法二、常用选项三、输出信息四、使用示例 3. sar 命令一、使用sar查看网络使用情况 4. ping 命令一、基本用法二、常用选项三、输出结果四、使用示例 Linux网络基础命令 1. ifconf…

Python酷库之旅-第三方库Pandas(245)

目录 一、用法精讲 1156、pandas.tseries.offsets.MonthEnd.is_month_start方法 1156-1、语法 1156-2、参数 1156-3、功能 1156-4、返回值 1156-5、说明 1156-6、用法 1156-6-1、数据准备 1156-6-2、代码示例 1156-6-3、结果输出 1157、pandas.tseries.offsets.Mon…

DAMODEL丹摩|Faster-Rcnn训练与部署实战

本文仅做测评体验&#xff0c;非广告。 文章目录 1. 丹摩介绍2. Faster-Rcnn介绍3. 准备3. 1 丹摩平台准备实例 3. 2 Faster-Rcnn4. 部署开始5. 训练5. 资源释放6. 结语 1. 丹摩介绍 详细介绍请看&#xff1a;丹摩平台介绍。 丹摩智算平台&#xff08;DAMODEL&#xff09;是…

NLP信息抽取大总结:三大任务(带Prompt模板)

信息抽取大总结 1.NLP的信息抽取的本质&#xff1f;2.信息抽取三大任务&#xff1f;3.开放域VS限定域4.信息抽取三大范式&#xff1f;范式一&#xff1a;基于自定义规则抽取&#xff08;2018年前&#xff09;范式二&#xff1a;基于Bert下游任务建模抽取&#xff08;2018年后&a…

LLM*:路径规划的大型语言模型增强增量启发式搜索

路径规划是机器人技术和自主导航中的一个基本科学问题&#xff0c;需要从起点到目的地推导出有效的路线&#xff0c;同时避开障碍物。A* 及其变体等传统算法能够确保路径有效性&#xff0c;但随着状态空间的增长&#xff0c;计算和内存效率会严重降低。相反&#xff0c;大型语言…

C#基础题总结

16.一张单据上有一个5位数的号码为6**42&#xff0c;其中百位数和千位数已模糊不清&#xff0c;但知道该数能被 57 和 67 除尽。设计一个算法&#xff0c;找出该单据所有可能的号码。 17.编程序求2&#xff5e;10000以内的完全数。一个数的因子&#xff08;除了这个数本身&…

Android数据存储——文件存储、SharedPreferences、SQLite、Litepal

数据存储全方案——详解持久化技术 Android系统中主要提供了3中方式用于简单地实现数据持久化功能&#xff0c;即文件存储、SharedPreference存储以及数据库存储。除了这三种方式外&#xff0c;还可以将数据保存在手机的SD卡中&#xff0c;不给使用文件、SharedPreference或者…

【动手学电机驱动】STM32-FOC(8)MCSDK Profiler 电机参数辨识

STM32-FOC&#xff08;1&#xff09;STM32 电机控制的软件开发环境 STM32-FOC&#xff08;2&#xff09;STM32 导入和创建项目 STM32-FOC&#xff08;3&#xff09;STM32 三路互补 PWM 输出 STM32-FOC&#xff08;4&#xff09;IHM03 电机控制套件介绍 STM32-FOC&#xff08;5&…