セパレータ


区分線

メニューなどで利用したセパレータは、Swing では単一のコンポーネントとして扱われています
セパレータは、単純なレイアウト要素としてコンテナに追加することも可能なのです
これは javax.swing.JSeparator クラスで実装されています
java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JSeparator

public class JSeparator extends JComponent
	implements SwingConstants, Accessible
このクラスは、次のようなコンストラクタを公開しています

public JSeparator()
public JSeparator(int orientation)

orientation にはセパレータが水平方向か垂直方向かを示すために
SwingConstants.HORIZONTAL または SwingConstants.VERTICAL を指定します

しかし、この状態ではセパレータのサイズが正しく設定されていないため
おそらく、想定した形で表示されてはくれないでしょう
サイズは、レイアウトマネージャに最適なサイズを通知する必要があります
これは JComponent.setPreferredSize() を使って設定します
また JComponent.getPreferredSize() メソッドで取得することができます

public void setPreferredSize(Dimension preferredSize)
public Dimension getPreferredSize()

AWT の場合、最適サイズを変更するメソッドが protected だったため
変更するにはオーバーライドを必要としましたが Swing はメソッドを公開しています
import java.awt.*;
import javax.swing.*;

public class Test extends JApplet {
	public void init() {
		JButton button1 = new JButton("The forever that you wish.");
		JButton button2 = new JButton("Forget me Not");
		JSeparator separator = new JSeparator(SwingConstants.HORIZONTAL);
		separator.setPreferredSize(new Dimension(200 , 5));

		getContentPane().setLayout(new FlowLayout());
		getContentPane().add(button1);
		getContentPane().add(separator);
		getContentPane().add(button2);
	}
}


このプログラムは、水平セパレータを作成してコンテナに追加しています
setPreferredSize() を使って最適サイズを変更している点に注目してください



前のページへ戻る次のページへ