Java Swing FlowLayout

2018-01-09 19:23 更新

Java Swing教程 - Java Swing FlowLayout


FlowLayout按照它们添加到容器的顺序布置组件水平,然后垂直。

当水平地定位部件时,它可以将它们从左到右,或从右到左。

水平布局方向取决于容器的方向。我们可以通过调用它的setComponentOrientation()方法来设置容器的方向。

要设置容器及其所有子项的方向,请改用applyComponentOrientation()方法。

以下代码显示如何设置方向内容窗格以“从右到左"。

JFrame  frame  = new JFrame("Test");
Container pane  = frame.getContentPane();
pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

这里是另一种方式做同样的事情,如上所述。

JFrame  frame  = new JFrame("Test");
Container pane  = frame.getContentPane();
pane.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

要以更通用的方式支持区域设置和方向,请全局设置所有Swing组件的默认区域设置:

// "ar" is used  for Arabic   locale
JComponent.setDefaultLocale(new Locale("ar"));

当我们创建JFrame时,我们可以根据默认语言环境获取组件的方向,并将其设置为框架及其子项。

这样,我们不必为应用程序中的每个容器设置方向。

Locale   defaultLocale = JComponent.getDefaultLocale();
ComponentOrientation componentOrientation  = ComponentOrientation.getOrientation(defaultLocale);
frame.applyComponentOrientation(componentOrientation);

FlowLayout尝试将所有组件放入一行,给它们他们的首选大小。如果所有组件不适合一行,则会启动另一行。

FlowLayout可以为宽度和高度添加额外的空间,以考虑组件之间的水平和垂直间隙。

import java.awt.Container;
import java.awt.FlowLayout;
// w  w  w .  j  ava 2s .c o m
import javax.swing.JButton;
import javax.swing.JFrame;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("Layout");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Container contentPane = frame.getContentPane();
    contentPane.setLayout(new FlowLayout());

    for (int i = 1; i <= 5; i++) {
      contentPane.add(new JButton("Button  " + i));
    }

    frame.pack();
    frame.setVisible(true);
  }
}


Java Swing教程 - Java Swing FlowLayout...

默认情况下,FlowLayout会对齐容器中心的所有组件。我们可以通过调用其setAlignment()方法或在其构造函数中传递对齐来更改对齐方式,如下所示:

在创建布局管理器对象时设置对齐方式

FlowLayout  flowLayout = new FlowLayout(FlowLayout.RIGHT);

在创建流布局管理器之后设置对齐

FlowLayout  flowLayout = new FlowLayout(FlowLayout.LEFT);
flowLayout.setAlignment(FlowLayout.RIGHT);

在FlowLayout类中定义了以下五个常量来表示五个不同的比对:

  • LEFT
  • RIGHT
  • CENTER
  • LEADING
  • TRAILING

LEADING对齐可以意味着向左或向右,  它取决于组件的方向。

LEADING对齐可以意味着向左或向右,  它取决于组件的方向。...

TRAILING对齐可以表示向左或向右。如果组件的方向为RIGHT_TO_LEFT,TRAILING对齐装置为LEFT。如果组件的方向是LEFT_TO_RIGHT,则TRAILING对齐表示向右。

TRAILING对齐可以表示向左或向右。如果组件的方向为RIGHT_TO_LEFT,TRAILING对齐装置为LEFT。如果组件的方向是LEFT_TO_RIGHT,则TRAILING对齐表示向右。...

import java.awt.ComponentOrientation;
import java.awt.Container;
import java.awt.FlowLayout;
// w  w w .  j  av a 2 s. c o m
import javax.swing.JButton;
import javax.swing.JFrame;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("Layout");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    int horizontalGap = 20;
    int verticalGap = 10;
    Container contentPane = frame.getContentPane();
    FlowLayout flowLayout = new FlowLayout(FlowLayout.LEADING, horizontalGap,
        verticalGap);
    contentPane.setLayout(flowLayout);
    frame.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

    for (int i = 1; i <= 5; i++) {
      contentPane.add(new JButton("Button  " + i));
    }
    frame.pack();
    frame.setVisible(true);
  }
}


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号