Javaメモ: Swing - デフォルトのレイアウトマネージャについて

JFrame の content pane と、JPanel にはデフォルトで以下のレイアウトマネージャが設定されています。

  • Content pane のデフォルトレイアウトは BorderLayout
  • JPanel のデフォルトレイアウトは FlowLayout

Content pane のデフォルトレイアウト

/p/5rvhyzn/img-001.png
JFrame の content pane のデフォルトは BorderLayout
Container contentPane = frame.getContentPane();
contentPane.add(new Button("CENTER"));
contentPane.add(new Button("NORTH"), BorderLayout.NORTH);
contentPane.add(new Button("SOUTH"), BorderLayout.SOUTH);
contentPane.add(new Button("EAST"), BorderLayout.EAST);
contentPane.add(new Button("WEST"), BorderLayout.WEST);

content pane のレイアウトを変更するには、Container.setLayout() を使用します。

contentPane.setLayout(new FlowLayout());

JPanel のデフォルトレイアウト

/p/5rvhyzn/img-002.png
JPanel のデフォルトは FlowLayout
JPanel panel = new JPanel();
panel.add(new Button("Button 1"));
panel.add(new Button("Button 2"));
panel.add(new Button("Button 3"));
frame.setContentPane(panel);

JPanel のレイアウトマネージャを変更するには、コンストラクタで指定します。

JPanel panel = new JPanel(new BorderLayout());

あるいは、Container.setLayout() を使用することもできます。

panel.setLayout(new BorderLayout());