Java Swing FlowLayout

2018-01-09 19:23 更新

Java Swing教程 - Java Swing FlowLayout


FlowLayout按照它們添加到容器的順序布置組件水平,然后垂直。

當(dāng)水平地定位部件時,它可以將它們從左到右,或從右到左。

水平布局方向取決于容器的方向。我們可以通過調(diào)用它的setComponentOrientation()方法來設(shè)置容器的方向。

要設(shè)置容器及其所有子項的方向,請改用applyComponentOrientation()方法。

以下代碼顯示如何設(shè)置方向內(nèi)容窗格以“從右到左"。

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);

要以更通用的方式支持區(qū)域設(shè)置和方向,請全局設(shè)置所有Swing組件的默認(rèn)區(qū)域設(shè)置:

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

當(dāng)我們創(chuàng)建JFrame時,我們可以根據(jù)默認(rèn)語言環(huán)境獲取組件的方向,并將其設(shè)置為框架及其子項。

這樣,我們不必為應(yīng)用程序中的每個容器設(shè)置方向。

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...

默認(rèn)情況下,F(xiàn)lowLayout會對齊容器中心的所有組件。我們可以通過調(diào)用其setAlignment()方法或在其構(gòu)造函數(shù)中傳遞對齊來更改對齊方式,如下所示:

在創(chuàng)建布局管理器對象時設(shè)置對齊方式

FlowLayout  flowLayout = new FlowLayout(FlowLayout.RIGHT);

在創(chuàng)建流布局管理器之后設(shè)置對齊

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);
  }
}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號