java swing 垂直居中_Swing-布局管理器之FlowLayout(流式布局)-入门

本文介绍了Java Swing中的FlowLayout布局管理器,详细讲解了FlowLayout的工作原理、对齐方式以及设置间距的方法。通过示例代码展示了如何创建并配置FlowLayout,以实现组件的垂直居中、左对齐、右对齐、LEADING和TRAILING对齐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标签:

FlowLayout应该是Swing布局管理器学习中最简单、最基础的一个。所谓流式,就是内部控件像水流一样,从前到后按顺序水平排列,直到达到容器的宽度时跳转到第二行。既然是水平排列,那么就存在三种基本的对齐方式:居中对齐(CENTER )、左对齐(LEFT )和右对齐(RIGHT )。然而,FlowLayout还提供两种对齐方式:LEADING,表示控件与容器方向开始边对应;TRAILING,控件与容器方向结束边对应。setAlignment(int align)用于设置对齐方式。在一般情况下,LEADING就是左对齐,TRAILING就是右对齐。除此之外,FlowLayout还可以对内部控件之间、内部控件与容器之间的间距进行设置,setHgap(int hgap)用于指定水平间距;setVgap(int vgap)用于指定垂直间距。

FlowLayout常用方法如下:

构造函数

名称

用途

FlowLayout()

构造一个新的 FlowLayout,它是默认居中对齐的,默认的水平和垂直间隙是5个像素

FlowLayout(int align)

构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个像素

五个参数值及含义如下:

0或FlowLayout.lEFT ,控件左对齐

1或FlowLayout.CENTER ,居中对齐

2或FlowLayout.RIGHT ,右对齐

3或FlowLayout.LEADING,控件与容器方向开始边对应

4或FlowLayout.TRAILING,控件与容器方向结束边对应

如果是0、1、2、3、4之外的整数,则为左对齐

FlowLayout(int align, int hgap, int vgap)

创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。

基本方法

名称

用途

Void setAlignment(int align)

设置此布局的对齐方式。

void setHgap(int hgap)

设置组件之间以及组件与 Container 的边之间的水平间隙。

void setVgap(int vgap)

设置组件之间以及组件与 Container 的边之间的垂直间隙。

测试用例如下:

packageLayoutDemo;importjava.awt.BorderLayout;importjava.awt.Dimension;importjava.awt.FlowLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.HashMap;importjava.util.Map;importjavax.swing.AbstractAction;importjavax.swing.JButton;importjavax.swing.JComboBox;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JTextField;/** @功能:演示FlowLayout布局管理器的用法

* @版本:20150609*/

public class FlowLayoutDemo extendsJFrame {

FlowLayout contentPanelLayout= newFlowLayout();

Map alignmentMap = new HashMap();

JPanel configPanel= newJPanel();

JPanel contentPanel= newJPanel();

JComboBox alignmentComboBox = new JComboBox();

JTextField textHgap= new JTextField("10");

JTextField textVgap= new JTextField("20");

MyListener myListener= newMyListener();publicFlowLayoutDemo() {//init

alignmentMap.put("LEFT", 0);

alignmentMap.put("CENTER", 1);

alignmentMap.put("RIGHT", 2);

alignmentMap.put("LEADING", 3);

alignmentMap.put("TRAILING", 4);//设置面板

configPanel.setLayout(newFlowLayout());

configPanel.add(new JLabel("对齐方式"));for(String alignment : alignmentMap.keySet()) {

alignmentComboBox.addItem(alignment);

}

configPanel.add(alignmentComboBox);

configPanel.add(new JLabel("水平间距"));

configPanel.add(textHgap);

configPanel.add(new JLabel("垂直间距"));

configPanel.add(textVgap);

JButton actionBtn= new JButton("Action!!!");

actionBtn.addActionListener(myListener);

configPanel.add(actionBtn);//展示面板

contentPanel.setLayout(contentPanelLayout);

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

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

contentPanel.add(new JButton("Button 3"));

contentPanel.add(new JButton("Button 4"));//主窗体

setLayout(newBorderLayout());

add("North",configPanel);

add("South", contentPanel);

}class MyListener implementsActionListener

{public voidactionPerformed(ActionEvent e)

{

String alignmentStr=alignmentComboBox.getSelectedItem().toString();int alignment =alignmentMap.get(alignmentStr);

contentPanelLayout.setAlignment(alignment);int hgap =Integer.valueOf(textHgap.getText());int vgap =Integer.valueOf(textVgap.getText());

contentPanelLayout.setHgap(hgap);

contentPanelLayout.setVgap(vgap);

contentPanel.updateUI();

}

}public static voidmain(String[] args) {//TODO Auto-generated method stub

FlowLayoutDemo window = newFlowLayoutDemo();

window.setTitle("FlowLayoutDemo");//该代码依据放置的组件设定窗口的大小使之正好能容纳你放置的所有组件

window.setPreferredSize(new Dimension(500, 200));

window.pack();

window.setVisible(true);

window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

window.setLocationRelativeTo(null); //让窗体居中显示

}

}

运行效果如下:

20180110163324127508.png

居中对齐

20180110163324129461.png

左对齐

20180110163324131414.png

右对齐

20180110163324132391.png

Leading对齐

20180110163324133367.png

Trailing对齐

标签:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值