【Java】【Swing】 レイアウト [1] ~ 基本編 ~

Swingのレイアウト種類

1) フローレイアウト(流し込みレイアウト)

2) グリッドレイアウト

 【イメージ図 : 3行2列の場合】
    +----------++----------+
    |    1     ||    2     |
    +----------++----------+
    +----------++----------+
    |    3     ||    4     |
    +----------++----------+
    +----------++----------+
    |    5     ||    6     |
    +----------++----------+

3) ボーダーレイアウト
 => 「上」「左」「中央」「右」「下」に区画を分けてレイアウトする

 【イメージ図】
    +------------------+
    |                  |
    +------------------+
    +---++--------++---+
    |   ||        ||   |
    +---++--------++---+
    +------------------+
    |                  |
    +------------------+

1) フローレイアウト

* 画面表示を変えれば、配置したボタンも流れる
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class FlowLayoutDemo {

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

    JPanel panel = new JPanel();
    // ★ここ★
    panel.setLayout(new FlowLayout());

    JButton button1 = new JButton("Button1");
    JButton button2 = new JButton("Button2");
    button2.setPreferredSize(new Dimension(150, 100));
    JButton button3 = new JButton("Button3");
    JButton button4 = new JButton("Button4");
    panel.add(button1);
    panel.add(button2);
    panel.add(button3);
    panel.add(button4);
    
    frame.add(panel);
    frame.pack();
    frame.setVisible(true);
  }
}

2) グリッドレイアウト

import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

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

    JPanel panel = new JPanel();
    // ★ここ★
    panel.setLayout(new GridLayout(3, 2));

    JButton button1 = new JButton("Button1");
    JButton button2 = new JButton("Button2");
    button2.setPreferredSize(new Dimension(150, 100));
    JButton button3 = new JButton("Button3");
    JButton button4 = new JButton("Button4");
    JButton button5 = new JButton("Button5");
    JButton button6 = new JButton("Button6");
    
    panel.add(button1);
    panel.add(button2);
    panel.add(button3);
    panel.add(button4);
    panel.add(button5);
    panel.add(button6);

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

3) ボーダーレイアウト

* 「上」「左」「中央」「右」「下」に区画を分けてレイアウトする
import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class BorderLayoutDemo {

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

    JPanel panel = new JPanel();
    // ★ここ★
    panel.setLayout(new BorderLayout());

    JButton button1 = new JButton("Button1");
    JButton button2 = new JButton("Button2");
    button2.setPreferredSize(new Dimension(150, 100));
    JButton button3 = new JButton("Button3");
    JButton button4 = new JButton("Button4");
    JButton button5 = new JButton("Button5");

    panel.add(button1, BorderLayout.NORTH);
    panel.add(button2, BorderLayout.WEST);
    panel.add(button3, BorderLayout.CENTER);
    panel.add(button4, BorderLayout.EAST);
    panel.add(button5, BorderLayout.SOUTH);

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

補足

 * 以下の関連記事でも使用している
http://blogs.yahoo.co.jp/dk521123/35027281.html


関連記事

Java】【Swing】 レイアウト [1] ~ 基本編 ~

http://blogs.yahoo.co.jp/dk521123/36548731.html

Java】【Swing】 レイアウト [2] ~ GroupLayout編 ~

http://blogs.yahoo.co.jp/dk521123/36548707.html

Java】【Swing】 レイアウト [3] ~ GridBagLayout 編 ~

http://blogs.yahoo.co.jp/dk521123/36548823.html

Java】【Swing】 レイアウト [4] ~ BoxLayout 編 - [1] ~

http://blogs.yahoo.co.jp/dk521123/36553511.html

Java】【Swing】 レイアウト [4] ~ BoxLayout 編 - [2] ~

http://blogs.yahoo.co.jp/dk521123/36664347.html

Java】【Swing】モジュール提供用テンプレートを作ってみた Part1

http://blogs.yahoo.co.jp/dk521123/35027281.html