java swing boxlayout_Java Swing BoxLayout

Java Swing教程 - Java Swing BoxLayout

BoxLayout在一个容器中将组件水平排列在一行或垂直在一列。

以下步骤显示如何使用BoxLayout。

首先,创建一个容器

JPanel hPanel = new JPanel();

然后,创建一个BoxLayout类的对象。当创建BoxLayout对象时,我们需要传递容器的构造函数。除了容器我们还传递了布局方向盒,水平或垂直于其构造函数。

该类有四个常量:X_AXIS,Y_AXIS,LINE_AXIS和PAGE_AXIS。常量X_AXIS创建一个水平BoxLayout它从左到右排列所有组件。

常量Y_AXIS用于创建垂直BoxLayout,从顶部到底部显示所有组件。

常量Y_AXIS用于创建垂直BoxLayout,从顶部到底部显示所有组件。...

以下代码显示了如何创建BoxLayout从左到右布置组件。

BoxLayout boxLayout = new BoxLayout(hPanel, BoxLayout.X_AXIS);

以下代码显示了如何创建BoxLayout从左到右布置组件。...

hPanel.setLayout(boxLayout);

最后,将组件添加到容器。

hPanel.add(new JButton("Button 1"));

hPanel.add(new JButton("Button 2"));

完整的源代码。

import java.awt.BorderLayout;

import java.awt.Container;

/*fromwww.java2s.com*/

import javax.swing.BoxLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Main {

public static void main(String[] args) {

JFrame frame = new JFrame("BoxLayout Test");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container contentPane = frame.getContentPane();

JPanel hPanel = new JPanel();

BoxLayout boxLayout = new BoxLayout(hPanel, BoxLayout.X_AXIS);

hPanel.setLayout(boxLayout);

for (int i = 1; i <= 5; i++) {

hPanel.add(new JButton("Button " + i));

}

contentPane.add(hPanel, BorderLayout.SOUTH);

frame.pack();

frame.setVisible(true);

}

}

BoxLayout尝试为水平布局中的所有组件给定首选宽度,并在中选择首选高度垂直布局。

在水平布局中,最高分量的高度被给予所有其他分量。

在垂直布局中,BoxLayout尝试为所有组件指定首选高度,然后尝试以使所有组件的大小与最宽组件的宽度相同。

我们可以通过使用setAlignmentX()方法或setAlignmentY()方法更改组件的对齐方式或容器的对齐方式来更改默认对齐方式。

javax.swing包包含一个Box类,使得使用BoxLayout更容易。

Box是一个使用BoxLayout作为其布局管理器的容器。

Box类提供了静态方法createHorizontalBox()和createVerticalBox()以创建具有水平或垂直布局的容器。

下面的代码显示了如何使用Box容器。

// Create a horizontal box

Box hBox = Box.createHorizontalBox();

// Create a vertical box

Box vBox = Box.createVerticalBox();

要向Box添加组件,请使用其add()方法

hBox.add(new JButton("Button 1");

hBox.add(new JButton("Button 2");

Box类允许我们创建不可见的组件来调整两个组件之间的间距。它提供了四种类型的不可见组件:

Glue

Strut

Rigid Area

Filler

胶水是一种看不见的可膨胀组件。 我们可以使用Box类的createHorizontalGlue()和createVerticalGlue()静态方法创建水平和垂直粘合。

以下代码在水平框布局中的两个按钮之间使用水平粘贴。

Box hBox = Box.createHorizontalBox();

hBox.add(new JButton("First"));

hBox.add(Box.createHorizontalGlue());

hBox.add(new JButton("Last"));

我们还可以使用Box类的createGlue()静态方法创建一个粘合组件,它可以水平和垂直扩展。

支柱是固定宽度或固定高度的不可见组件。

createHorizontalStrut()方法创建一个水平strut,以像素的宽度为参数。 createVerticalStrut()方法创建一个垂直的strut,以像素的高度为参数。

以下代码显示了如何向水平框添加100px支柱

hBox.add(Box.createHorizontalStrut(100));

刚性区域是尺寸保持不变的不可见组件。

createRigidArea()Box类的静态方法,它需要一个Dimension对象来指定它的宽度和高度,创建一个刚性区域。

以下代码将一个10 x 5的刚性区域添加到水平框中。

hBox.add(Box.createRigidArea(new Dimesnion(10, 5)));

填充程序是一个不可见的自定义组件,我们可以通过指定自己的最小,最大和首选大小来创建。

Box类的Filler静态嵌套类表示填充。

下面的代码创建一个填充,它像胶水一样。胶水只是一个填充物,最小和首选大小设置为零,最大大小设置为Short.MAX_VALUE在两个方向。

Dimension minSize = new Dimension(0, 0);

Dimension prefSize = new Dimension(0, 0);

Dimension maxSize = new Dimension(Short.MAX_VALUE, Short.MAX_VALUE);

Box.Filler filler = new Box.Filler(minSize, prefSize, maxSize);

以下代码创建了10x10的刚体区域:

Dimension d = new Dimension(10, 10);

JComponent rigidArea = new Box.Filler(d, d, d);

完整的源代码。

import java.awt.BorderLayout;

import java.awt.Container;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JFrame;

public class Main {

public static void main(String[] args) {

JFrame frame = new JFrame("BoxLayout with Glue");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container contentPane = frame.getContentPane();

Box hBox = Box.createHorizontalBox();

hBox.add(new JButton("First"));

hBox.add(new JButton("Previous"));

hBox.add(Box.createHorizontalGlue());

hBox.add(new JButton("Next"));

hBox.add(new JButton("Last"));

contentPane.add(hBox, BorderLayout.SOUTH);

frame.pack();

frame.setVisible(true);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值