3、JavaSwing 布局管理器——BoxLayout(箱式布局)

概述

官方JavaDocsApi:

https://docs.oracle.com/javase/8/docs/api/javax/swing/BoxLayout.html

https://docs.oracle.com/javase/8/docs/api/javax/swing/Box.html

 

BoxLayout,箱式布局管理器。

它把若干组件按水平或垂直方向依次排列放置。Swing 提供了一个实现了 BoxLayout 的容器组件Box。使用 Box 提供的静态方法,可快速创建水平/垂直箱容器(Box),以及填充组件之间空隙的不可见组件。用水平箱和垂直箱的组合嵌套可实现类似于 GridBagLayout 的效果,但没那么复杂。

 

创建水平/垂直箱容器(Box):

// 创建一个水平箱容器

Box hBox = Box.createHorizontalBox();

// 创建一个垂直箱容器

Box vBox = Box.createVerticalBox();

 

Box 内的组件之间默认没有空隙并居中,如果想在组件之间(或头部/尾部)添加空隙,可以在其中添加一个影响布局的不可见组件。Box 提供了三种用于填充空隙的不可见组件:glue、struts 和 rigidAreas。

 

创建 胶状(宽/高可伸缩)的不可见组件(glue):

// 创建一个 水平方向胶状 的不可见组件,用于撑满水平方向剩余的空间(如果有多个该组件,则平分剩余空间)

Component hGlue = Box.createHorizontalGlue();

 

// 创建一个 垂直方向胶状 的不可见组件,用于撑满垂直方向剩余的空间(如果有多个该组件,则平分剩余空间)

Component vGlue = Box.createVerticalGlue();

 

// 创建一个 水平和垂直方向胶状 的不可见组件,用于撑满水平和垂直方向剩余的空间(如果有多个该组件,则平分剩余空间)

Component glue = Box.createGlue();

创建 固定宽度或高度 的不可见组件(struts):

 

// 创建一个 固定宽度 的不可见组件(用于水平箱)

Component hStrut = Box.createHorizontalStrut(int width);

 

// 创建一个 固定高度 的不可见组件(用于垂直箱)

Component vStrut = Box.createVerticalStrut(int height);

创建 固定宽高 的不可见组件(rigidAreas):

 

// 创建 固定宽高 的不可见组件

Component rigidArea = Box.createRigidArea(new Dimension(int width, int height));

代码实例

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;

/**
 * 箱式布局
 * @author 28250
 *
 */
public class TestBox {

	public static void main(String[] args) {
		//创建窗口
		JFrame jf = new JFrame();
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//创建按钮
		JButton btn1 = new JButton("JButton1");
		JButton btn2 = new JButton("JButton2");
		JButton btn3 = new JButton("JButton3");
		JButton btn4 = new JButton("JButton4");
		JButton btn5 = new JButton("JButton5");
		
		//创建一个水平箱子容器
		Box hBox1 = Box.createHorizontalBox();
		hBox1.add(btn1);
		hBox1.add(btn2);
		hBox1.add(btn3);
		
		//创建第二个水平箱子容器
		Box hBox2 = Box.createHorizontalBox();
		hBox2.add(btn4);
		hBox2.add(Box.createHorizontalGlue());  //添加一个水平方向胶棒不可见的组件
		hBox2.add(btn5);
		
		//创建一个装两个盒子的竖直方向的盒子
		Box vBox = Box.createVerticalBox();
		vBox.add(hBox1);
		//添加固定高度的不可见的组件
		vBox.add(Box.createVerticalStrut(20));
		vBox.add(hBox2);
		
		//将大盒子添加到面板中
		jf.setContentPane(vBox);
		//让组件中的空白去除,适应当前的最小格局大小
		jf.pack();
		
		//窗口居中
		jf.setLocationRelativeTo(null);
		
		//显示
		jf.setVisible(true);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_43629083/article/details/109017620
今日推荐