|
||||||||||||||||||||||
|
ホーム > Swing による GUI > BorderLayout (ボーダーレイアウト) の基礎 BorderLayout (ボーダーレイアウト) の基礎ボーダーレイアウト (BorderLayout) ではそれに含まれるコンポーネントを、 上下、右左、中央に配置します。 ボーダーレイアウトの指定全てのコンテナのレイアウトのデフォルトは BorderLayout なので、 setLayout メソッドで明示的に BorderLayout を設定しなくてもボーダーレイアウトを利用可能です。 JFrame のコンテントペインなどのコンテナに対して、BorderLayout を明示的に指定するには、 次のように setLayout メソッドに BorderLayout オブジェクトを渡します。 setLayout(new BorderLayout(10,5)); ボーダーレイアウトによる配置方法場所の指定の仕方は、「東西南北の4つと中央の計5つ」 という指定方法と、 「ページ開始と終わり(上下に相当)、行の開始と終わり(右または左。後述)、それと行の中央の計5つ」 という二通りの指定方法があります。 方法1:「東西南北の4つと中央の計5つ」
東西南北と中央で指定する方法は非常に単純です。 コンテナに、コンポーネントを add するときに、BorderLayout.NORTH、BorderLayout.SOUTH、・・・ などのパラメータを同時に渡すことで、 ボーダーレイアウトにおける場所を指定します。 上のスクリーンショットのプログラムのソースコードは次のとおりです。
import java.awt.BorderLayout;
import java.awt.ComponentOrientation;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class LayoutTestBorder2 extends JFrame {
public LayoutTestBorder2(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,300);
setLayout(new BorderLayout(10,5));
Container contentPane = getContentPane();
contentPane.add(
new JButton("1 - North"),
BorderLayout.NORTH);
contentPane.add(
new JButton("2 - South"),
BorderLayout.SOUTH);
contentPane.add(
new JButton("3 - West"),
BorderLayout.WEST);
contentPane.add(
new JButton("4 - East"),
BorderLayout.EAST);
contentPane.add(
new JButton("5 - Center"),
BorderLayout.CENTER);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
createAndShowGUI();
}
});
}
protected static void createAndShowGUI() {
LayoutTestBorder2 frame = new LayoutTestBorder2();
frame.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
frame.setVisible(true);
}
}
方法2:「ページ開始と終わり、行の開始と終わり、それと行の中央の計5つ」
コンテナに、コンポーネントを add するときに、BorderLayout.PAGE_START、BorderLayout.PAGE_END、 BorderLayout.LINE_START、・・・ などのパラメータを同時に渡すことでも場所を指定できます。 上のスクリーンショットのプログラムのソースコードは次のとおりです。
import java.awt.BorderLayout;
import java.awt.ComponentOrientation;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class LayoutTestBorder1 extends JFrame {
public LayoutTestBorder1(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,300);
setLayout(new BorderLayout(10,5));
Container contentPane = getContentPane();
contentPane.add(
new JButton("1 - Page Start"),
BorderLayout.PAGE_START);
contentPane.add(
new JButton("2 - Page End"),
BorderLayout.PAGE_END);
contentPane.add(
new JButton("3 - Line Start"),
BorderLayout.LINE_START);
contentPane.add(
new JButton("4 - Line End"),
BorderLayout.LINE_END);
contentPane.add(
new JButton("5 - Center"),
BorderLayout.CENTER);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
createAndShowGUI();
}
});
}
protected static void createAndShowGUI() {
LayoutTestBorder1 frame = new LayoutTestBorder1();
frame.setVisible(true);
}
}
例えば英語では、文章を上から下へ、左から右へ読むので、PAGE_START、PAGE_END はそれぞれ上 (NORTH)、下 (SOUTH) と同等に、 LINE_START、LINE_END はそれぞれ左 (WEST)、右 (EAST) と同等になります。 もしロケールが右から左へ読むように設定されている場合は、LINE_START、LINE_END はそれぞれ EAST、WEST と同等の意味になります。 実際に、次のように方向(オリエンテーション)を指定して試すと・・・ frame.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
このように、向きが変わります。 念のため言うと、オリエンテーションを右から左に変更しても、東西南北で指定したときはレイアウトは変わりません。 コンポーネントの配置を、ロケールによって変えたい場合はこの2番目の方法でレイアウトを指定すると良いでしょう。 ホーム > Swing による GUI > BorderLayout (ボーダーレイアウト) の基礎 |
|
© 2010 Java 入門 |
|||||||||||||||||||