制約を設定せずにコンテポーネントを追加した場合

広告

SpringLayoutをレイアウトマネージャーとして利用する場合、「add」メソッドを使ってコンポーネントを追加する点は他のレイアウトマネージャーと同じですが、追加されるコンポーネントがどのように配置されるのかを表す制約を別途設定する必要があります。

まず制約を設定せずにコンポーネントを追加した場合を簡単なサンプルで試してみます。

SpringLayoutTest1.java

import javax.swing.*;
import java.awt.Font;
import java.awt.BorderLayout;

public class SpringLayoutTest1 extends JFrame{

  public static void main(String[] args){
    SpringLayoutTest1 frame = new SpringLayoutTest1();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  SpringLayoutTest1(){
    SpringLayout layout = new SpringLayout();
    JPanel p = new JPanel();
    p.setLayout(layout);

    JButton button1 = new JButton("Google");
    JButton button2 = new JButton("Yahoo!");
    button2.setFont(new Font("Arial", Font.PLAIN, 30));
    JButton button3 = new JButton("MSN");

    p.add(button1);
    p.add(button2);
    p.add(button3);

    getContentPane().add(p, BorderLayout.CENTER);
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

SpringLayoutで制約を設定せずにコンポーネントを追加した場合

少し分かりにくいですがSpringLayoutをレイアウトマネージャーとして設定したコンテナに単にコンポーネントを追加していくと、各コンポーネントは左上に接する形で配置されます。3つのコンポーネントが全て同じ位置に配置されているため上記のような表示となっています。

各コンポーネントの位置やサイズを設定するためには各コンポーネントに対して制約を設定していく必要があります。次のページから制約の設定方法について詳しく見ていきます。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)