按钮自动居中布局_Java Swing布局管理器(详解版)

本文详细介绍了Java Swing中的6种布局管理器:边框布局、流式布局、卡片布局、网格布局、网格包布局和盒布局。边框布局将窗口划分为五个区域,流式布局按行排列组件,卡片布局允许多个组件共享同一显示空间,网格布局创建固定大小的单元格,网格包布局提供更复杂灵活的布局,盒布局则支持水平或垂直排列组件。每个布局都有其独特优势,适用于不同的UI设计需求。
摘要由CSDN通过智能技术生成

在使用 Swing 向容器添加组件时,需要考虑组件的位置和大小。如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器中添加。这样虽然能够灵活控制组件的位置,实现却非常麻烦。
为了加快开发速度,Java 提供了一些布局管理器,它们可以将组件进行统一管理,这样开发人员就不需要考虑组件是否会重叠等问题。本节介绍 Swing 提供的 6 种布局类型,所有布局都实现 LayoutManager 接口。

边框布局管理器

BorderLayout(边框布局管理器)是 Window、JFrame 和 JDialog 的默认布局管理器。边框布局管理器将窗口分为 5 个区域:North、South、East、West 和 Center。其中,North 表示北,将占据面板的上方;Soufe 表示南,将占据面板的下方;East表示东,将占据面板的右侧;West 表示西,将占据面板的左侧;中间区域 Center 是在东、南、西、北都填满后剩下的区域,如图 1 所示。

e375aec39455512903f2dd139a182438.png图1 边框布局管理器区域划分示意图

提示:边框布局管理器并不要求所有区域都必须有组件,如果四周的区域(North、South、East 和 West 区域)没有组件,则由 Center 区域去补充。如果单个区域中添加的不只一个组件,那么后来添加的组件将覆盖原来的组件,所以,区域中只显示最后添加的一个组件。
BorderLayout 布局管理器的构造方法如下所示。

  • BorderLayout():创建一个 Border 布局,组件之间没有间隙。

  • BorderLayout(int hgap,int vgap):创建一个 Border 布局,其中 hgap 表示组件之间的横向间隔;vgap 表示组件之间的纵向间隔,单位是像素。

例 1

使用 BorderLayout 将窗口分割为 5 个区域,并在每个区域添加一个标签按钮。实现代码如下:

package ch17;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import java.awt.*;public class BorderLayoutDemo{
         public static void main(String[] agrs){
             JFrame frame=new JFrame("Java第三个GUI程序");    //创建Frame窗口        frame.setSize(400,200);        frame.setLayout(new BorderLayout());    //为Frame窗口设置布局为BorderLayout        JButton button1=new JButton ("上");        JButton button2=new JButton("左");        JButton button3=new JButton("中");        JButton button4=new JButton("右");        JButton button5=new JButton("下");        frame.add(button1,BorderLayout.NORTH);        frame.add(button2,BorderLayout.WEST);        frame.add(button3,BorderLayout.CENTER);        frame.add(button4,BorderLayout.EAST);        frame.add(button5,BorderLayout.SOUTH);        frame.setBounds(300,200,600,300);        frame.setVisible(true);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }}

在该程序中分别指定了 BorderLayout 布局的东、南、西、北、中间区域中要填充的按钮。该程序的运行结果如图 2 所示。

bd93a5fc70e99fadb0d1383750472b9c.png图2 填充5个区域的效果

如果未指定布局管理器的 NORTH 区域,即将“frame.add(button1,BorderLayout.NORTH);”注释掉,则 WEST、CENTER 和 EAST 3 个区域将会填充 NORTH 区域,如图 3 所示。

850bda26521b22d3203e0cab73617d4e.png图3 缺少NORTH区域

同理,如果未指定布局管理器的 WEST 区域,即将“frame.add(button2,BorderLayout.WEST);”注释掉,则 CENTER 区域将会自动拉伸填充 WEST 区域,如图 4 所示。

f5e46eda26137dc2d31a4f8f37898dd1.png图4 缺少WEST区域

流式布局管理器

FlowLayout(流式布局管理器)是 JPanel 和 JApplet 的默认布局管理器。FlowLayout 会将组件按照从上到下、从左到右的放置规律逐行进行定位。与其他布局管理器不同的是,FlowLayout 布局管理器不限制它所管理组件的大小,而是允许它们有自己的最佳大小。
FlowLayout 布局管理器的构造方法如下。

  • FlowLayout():创建一个布局管理器,使用默认的居中对齐方式和默认 5 像素的水平和垂直间隔。

  • FlowLayout(int align):创建一个布局管理器,使用默认 5 像素的水平和垂直间隔。其中,align 表示组件的对齐方式,对齐的值必须是 FlowLayoutLEFT、FlowLayout.RIGHT 和 FlowLayout.CENTER,指定组件在这一行的位置是居左对齐、居右对齐或居中对齐。

  • FlowLayout(int align, int hgap,int vgap):创建一个布局管理器,其中 align 表示组件的对齐方式;hgap 表示组件之间的横向间隔;vgap 表示组件之间的纵向间隔,单位是像素。

例 2

创建一个窗口,设置标题为“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值