行と列の数を指定する
GridLayoutは指定した行と列の数によって領域を均等に分割するレイアウトマネージャーです。そこでここでは領域を分割する行と列の指定方法を見てみます。
行と列の数を指定するにはコンストラクタで指定する方法とメソッドで指定する方法があります。まずはコンストラクタで指定する方法を確認します。
public GridLayout(int rows, int cols)
指定された数の行と列を持つグリッドレイアウトを作成します。レイアウト内 のコンポーネントはすべて、等しいサイズに指定されます。 rows と cols のどちらか 1 つはゼロでもかまいません。ゼロの場合、オブジェ クトをいくつでも 1 行または 1 列に配置できることを意味します。 パラメータ: rows - 行数。値ゼロは任意の数の行を 意味する cols - 列数。値ゼロは任意の数の列を 意味する
1番目の引数には行数を指定し2番目の引数には列数を指定します。指定する値はint型の値です。
実際の使い方は次のようになります。
JPanel p = new JPanel(); p.setLayout(new GridLayout(5,3));
メソッドで指定する
GridLayoutクラスのオブジェクトを作成した後でメソッドを使って行と列の数を指定することも可能です。行数を指定するにはGridLayoutクラスで用意されている「setRows」メソッドを使います。
public void setRows(int rows)
このレイアウト内の行数を、指定された値に設定します。 パラメータ: rows - このレイアウト内の行数 例外: IllegalArgumentException - rows と cols の値をどちらもゼロに設定した 場合
引数には行数を表すint型の値を指定します。
次に列数を指定するにはGridLayoutクラスで用意されている「setColumns」メソッドを使います。
public void setColumns(int cols)
このレイアウトの列数を、指定された値に設定します。コンストラクタまたは setRows メソッドによって指定された行の数がゼロでない場合は、列数の設定 はレイアウトに影響しません。その場合、レイアウトに表示される列数は、コ ンポーネントの総数および指定された行の数によって決定されます。 パラメータ: cols - このレイアウト内の列数 例外: IllegalArgumentException - rows と cols の値をどちらもゼロに設定した 場合
引数には列数を表すint型の値を指定します。
実際の使い方は次のようになります。
JPanel p = new JPanel(); GridLayout layout = new GridLayout(); layout.setRows(5); layout.setColumns(3); p.setLayout(layout);
なお、行と列を指定して領域を分割する場合、作成された領域数と配置するコンポーネントの数が異なる場合は列数はあまり意味を持たなくなります。詳細は次のページで確認します。
サンプルプログラム
では簡単なサンプルを作成して試してみます。
import javax.swing.*; import java.awt.GridLayout; import java.awt.BorderLayout; public class GridLayoutTest2 extends JFrame{ public static void main(String[] args){ GridLayoutTest2 frame = new GridLayoutTest2(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 300, 200); frame.setTitle("タイトル"); frame.setVisible(true); } GridLayoutTest2(){ JButton button1 = new JButton("Button1"); JButton button2 = new JButton("Button2"); JButton button3 = new JButton("Button3"); JLabel label1 = new JLabel("Label1"); JLabel label2 = new JLabel("Label2"); JPanel p = new JPanel(); p.setLayout(new GridLayout(3, 2)); p.add(button1); p.add(label1); p.add(label2); p.add(button2); p.add(button3); getContentPane().add(p, BorderLayout.CENTER); } }
上記をコンパイルした後で実行すると次のように表示されます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。