サンプル
例1:ボタンを縦に並べる
import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class BoxLayoutDemo { public static void main(String[] args) { JFrame frame = new JFrame("BorderLayout Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); JButton button1 = new JButton("Button1"); JButton button2 = new JButton("Button2"); JButton button3 = new JButton("Button3"); // ★ここに注目★ panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); panel.add(button1); panel.add(button2); panel.add(button3); frame.add(panel); frame.pack(); frame.setVisible(true); } }
例2:ボタン(3×2)を並べる
イメージ図+------------------------+ |+------++------++------+|<= BoxLayout.X_AXIS || || || || || || || |<= BoxLayout.Y_AXIS || || || || || || || || |+------++------++------+| +------------------------+ +------------------------+ |+------++------++------+| || 1_1 || 2_1 || 3_1 || |+------++------++------+| |+------++------++------+| || 1_2 || 2_2 || 3_2 || |+------++------++------+| +------------------------+http://d.hatena.ne.jp/kotsubu-chan/20080411/1221834349
が分かりやすい
import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class BoxLayoutDemo { public static void main(String[] args) { JFrame frame = new JFrame("BorderLayout Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); JButton button1_1 = new JButton("Button1_1"); JButton button1_2 = new JButton("Button1_2"); JButton button2_1 = new JButton("Button2_1"); JButton button2_2 = new JButton("Button2_2"); JButton button3_1 = new JButton("Button3_1"); JButton button3_2 = new JButton("Button3_2"); // ★ここに注目★ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); JPanel panel1 = new JPanel(); panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS)); panel1.add(button1_1); panel1.add(button1_2); panel.add(panel1); JPanel panel2 = new JPanel(); panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXIS)); panel2.add(button2_1); panel2.add(button2_2); panel.add(panel2); JPanel panel3 = new JPanel(); panel3.setLayout(new BoxLayout(panel3, BoxLayout.Y_AXIS)); panel3.add(button3_1); panel3.add(button3_2); panel.add(panel3); frame.add(panel); frame.pack(); frame.setVisible(true); } }
BoxLayout いろいろ
コンポーネント間にスペースを空ける
[1] glue(接着剤) => 領域が余った場合、それを割りあてる時に使う [2] strut(柱) => 片方向(縦または横)のスペースの大きさを指定する [3] rigid area(固定領域) => 両方向のスペースの大きさを指定するBox.createRigidArea() を使用する
panel.add(button1); panel.add(button2); panel.add(Box.createRigidArea(new Dimension(40, 50))); panel.add(button3);参考文献
http://www.techscore.com/tech/Java/JavaSE/UI/6-2/
http://bitwalk.sitemix.jp/java_layout_BoxLayout.php
http://www.javadrive.jp/tutorial/boxlayout/index6.html
Box.createVerticalBox() / Box.createHorizontalBox()
* 以下の関連記事を参照のこと。http://blogs.yahoo.co.jp/dk521123/36664347.html