6.9 セパレータ
6.9.1 コンポーネントを区切る
セパレータは、コンポーネントとコンポーネントの間を区切るためのコンポーネントです。主に、メニュー項目のグループを分けるための区切り線として利用されますが、通常のコンテナ上で複数のコンポーネントを区切るために使用することもできます。
セパレータを表示するには 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
セパレータは入力を受け付けることもなく、表示する内容もコンポーネントサイズに従った区切り線だけなので、JSeparator クラスはいたってシンプルです。セパレータが保有する唯一のプロパティは、区切り線が水平線か垂直線かを表す SwingConstants インタフェースの値だけです。JSeparator クラスのコンストラクタは次の 2 つだけです。
public JSeparator()
public JSeparator(int orientation)
デフォルトのコンストラクタを呼び出した場合は水平のセパレータが生成されます。orientation には SwingConstants.HORIZONTAL または SwingConstants.VERTICAL を指定し、このセパレータが水平線を描画するのか、垂直線を描画するのかを指定します。
この値は setOrientation() メソッドで設定し getOrientation() メソッドから取得することもできます。
public void setOrientation(int orientation)
public int getOrientation()
セパレータはコンポーネントの内容を表示する適切なサイズを持たないため、レイアウトマネージャがコンポーネントが主張する適切なサイズを参照する場合は、JComponent クラスの setPreferredSize() で適切なサイズを指定しなければなりません。レイアウトマネージャの都合でコンポーネントのサイズを決定する場合は不要です。
import java.awt.*; import javax.swing.*; public class Test { public static void main(String args[]) { JButton button1 = new JButton("Button1"); JButton button2 = new JButton("Button2"); JSeparator sep = new JSeparator(SwingConstants.VERTICAL); sep.setPreferredSize(new Dimension(5 , 50)); JFrame win = new JFrame(); win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); win.setBounds(10 , 10 , 400 , 300); win.getContentPane().setLayout(new FlowLayout()); win.getContentPane().add(button1); win.getContentPane().add(sep); win.getContentPane().add(button2); win.show(); } }
コード1は、垂直のセパレータを生成して 2 つのボタンを区切ります。実行結果のボタンの間に表示されている垂直線がセパレータコンポーネントです。直線のバーに項目を列挙するコンテナなどで利用すると良いでしょう。項目を列挙するコンテナとは、一般的なアプリケーションにおけるメニューバー、ツールバー、ステータスバー、あるいは Mac OS X の Dock のような機能を提供するコンテナが考えられるでしょう。