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

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:适用于需要将组件均匀分布在网格中的情况。

http://www.kler.cn/a/409825.html

相关文章:

  • C++设计模式-策略模式-StrategyMethod
  • autogen框架中使用chatglm4模型实现react
  • 在ASP.NET Core WebAPI 中使用轻量级的方式实现一个支持持久化的缓存组件
  • 详解Oracle表的类型(二)
  • UG NX二次开发(C++)-UIStyler-指定平面的对象和参数获取
  • Load-Balanced-Online-OJ(负载均衡式在线OJ)
  • Vue报错:error Mixed spaces and tabs no-mixed-spaces-and-tabs——报错处理
  • 神经网络归一化方法总结
  • 鸿蒙心路旅程:探索与收获之旅 勇攀高峰
  • 【我在CSDN成长】我的五周年创作纪念日
  • 掌握控制流的艺术:Go语言中的if、for和switch语句
  • php 导出excel 一个单元格 多张图片
  • 释放已删除空间资源
  • API设计与开发
  • MATLAB R2024b软件下载安装步骤
  • A047-基于Spring Boot的医疗挂号管理系统的设计与实现
  • java编程开发基础,正则表达式的使用案例Demo
  • 基于微信小程序的小动物救助领养平台
  • 页的初步认识
  • H3C OSPF 多区域实验
  • 【数据结构与算法】相交链表、环形链表(判断是否有环)、环形链表(返回入环节点)
  • Rust环境安装乱码解决
  • cookie属性SameSite简介
  • java多线程 1
  • 第02章_MySQL环境搭建(基础)
  • Elasticsearch:Retrievers 介绍