Java Swing组件布局管理器之FlowLayout(流式布局)入门教程

 更新时间:2017年11月15日 09:03:17   作者:pzy4447  
这篇文章主要介绍了Java Swing组件布局管理器之FlowLayout(流式布局),结合实例形式分析了Swing组件布局管理器FlowLayout流式布局的常用方法及相关使用技巧,需要的朋友可以参考下

本文实例讲述了Java Swing组件布局管理器之FlowLayout(流式布局)。分享给大家供大家参考,具体如下:

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 的边之间的垂直间隙。


测试用例如下:

package awtDemo;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/*
 * @功能:演示FlowLayout布局管理器的用法
 * @版本:20150609
 */
@SuppressWarnings("serial")
public class FlowLayoutDemo extends JFrame {
 FlowLayout contentPanelLayout = new FlowLayout();
 Map<String, Integer> alignmentMap = new HashMap<String, Integer>();
 JPanel configPanel = new JPanel();
 JPanel contentPanel = new JPanel();
 JComboBox<String> alignmentComboBox = new JComboBox<String> ();
 JTextField textHgap = new JTextField("10");
 JTextField textVgap = new JTextField("20");
 MyListener myListener = new MyListener();
 public FlowLayoutDemo() {
 //init
 alignmentMap.put("LEFT", 0);
 alignmentMap.put("CENTER", 1);
 alignmentMap.put("RIGHT", 2);
 alignmentMap.put("LEADING", 3);
 alignmentMap.put("TRAILING", 4);
 //设置面板
 configPanel.setLayout(new FlowLayout());
 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(new BorderLayout());
 add("North",configPanel);
 add("South", contentPanel);
 }
 class MyListener implements ActionListener
 {
 public void actionPerformed(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 void main(String[] args) {
 // TODO Auto-generated method stub
 FlowLayoutDemo window = new FlowLayoutDemo();
 window.setTitle("FlowLayoutDemo - www.jb51.net");
 // 该代码依据放置的组件设定窗口的大小使之正好能容纳你放置的所有组件
 window.setPreferredSize(new Dimension(500, 200));
 window.pack();
 window.setVisible(true);
 window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 window.setLocationRelativeTo(null); // 让窗体居中显示
 }
}

运行效果如下:

更多关于java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • 如何解决@NotBlank不生效的问题

    如何解决@NotBlank不生效的问题

    这篇文章主要介绍了如何解决@NotBlank不生效的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java内存屏障详解

    Java内存屏障详解

    文章主要介绍了内存屏障的必要性,以及在多核处理器中如何通过内存屏障来保证多线程程序的内存可见性和防止指令乱序执行,文章还详细解释了内存屏障的作用、原理以及常见处理器中的重排序类型
    2025-01-01
  • logback StatusListener的定义方法源码解读

    logback StatusListener的定义方法源码解读

    这篇文章主要为大家介绍了logback StatusListener的定义方法源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • jvm调优的几种场景(小结)

    jvm调优的几种场景(小结)

    本文主要介绍了jvm调优的几种场景,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Springboot-Management的项目实践

    Springboot-Management的项目实践

    本文主要介绍了Springboot-Management的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 举例讲解Java中的Stream流概念

    举例讲解Java中的Stream流概念

    这篇文章主要介绍了举例讲解Java中的Stream流概念,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • Android实现兼容的水波纹效果

    Android实现兼容的水波纹效果

    Android的水波纹效果只有高版本才有,我们希望自己的应用在低版本用低版本的阴影,而高版本用水波纹,这怎么做呢?下面一起来学习学习。
    2016-08-08
  • java中实现map与对象相互转换的几种实现

    java中实现map与对象相互转换的几种实现

    这篇文章主要介绍了java中实现map与对象相互转换的几种实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 详解springboot测试类注解

    详解springboot测试类注解

    这篇文章主要介绍了springboot测试类注解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 浅谈Spring Cloud zuul http请求转发原理

    浅谈Spring Cloud zuul http请求转发原理

    这篇文章主要介绍了浅谈Spring Cloud zuul http请求转发原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论