ベースラインに沿って垂直方向に揃えるかどうかを設定する

広告

レイアウトマネージャーとしてFlowLayoutを設定している場合、同じ縦位置にあるコンポーネントは中央位置に沿って垂直方向に揃えられます。

FlowLayoutでベースラインに沿って垂直方向に揃える

ここではベースラインに沿って垂直方向に揃えるように設定する方法を確認します。設定を行うにはFlowLayoutクラスで用意されている「setAlignOnBaseline」メソッドを使います。

コンポーネントをベースラインに沿って垂直方向に揃えるかどうかを設定しま
す。ベースラインを持たないコンポーネントは中央に配置されます。デフォル
トは false です。

パラメータ:
  alignOnBaseline - コンポーネントをベースラインに沿って 垂直方向に揃え
    るかどうか

※このメソッドはJava SE6から用意されたメソッドです。

引数にはベースラインに沿って揃えるかどうかを表すboolean型の値を指定します。ベースラインに沿って揃える場合には「true」を設定して下さい。

実際の使い方は次のようになります。

FlowLayout layout = new FlowLayout();
layout.setAlignOnBaseline(true);

サンプルプログラム

では簡単なサンプルを作成して試してみます。

FlowLayoutTest5.java

import javax.swing.*;
import java.awt.Font;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.BorderLayout;

public class FlowLayoutTest5 extends JFrame{

  public static void main(String[] args){
    FlowLayoutTest5 frame = new FlowLayoutTest5();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  FlowLayoutTest5(){
    JLabel label1 = new JLabel("ABC");
    label1.setFont(new Font(Font.DIALOG, Font.PLAIN, 32));
    label1.setOpaque(true);
    label1.setBackground(Color.WHITE);

    JLabel label2 = new JLabel("ABC");
    label2.setFont(new Font(Font.DIALOG, Font.PLAIN, 12));
    label2.setOpaque(true);
    label2.setBackground(Color.WHITE);

    JLabel label3 = new JLabel("ABC");
    label3.setFont(new Font(Font.DIALOG, Font.PLAIN, 16));
    label3.setOpaque(true);
    label3.setBackground(Color.WHITE);

    JPanel p = new JPanel();

    FlowLayout layout = new FlowLayout();
    layout.setAlignOnBaseline(true);
    p.setLayout(layout);

    p.add(label1);
    p.add(label2);
    p.add(label3);

    getContentPane().add(p, BorderLayout.CENTER);
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

FlowLayoutでベースラインに沿って垂直方向に揃える

少し分かりにくいですが配置されている各コンポーネントに表示されている文字のベースラインに沿って揃えられているのが確認できます。

FlowLayoutでベースラインに沿って垂直方向に揃える

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)