10.4 ツールバー
10.4.1 選択コンポーネントの列挙
多くのビジネスアプリケーションや、データ編集ソフトウェアにはツールバーが実装されています。例えば、コンピュータグラフィックスを製作するペイントツールでは、キャンバスに色を塗るためのペンやブラシの種類をツールバーから選択するという設計が一般的です。図を作成するドロー系ツールも同様です。
ビジネスアプリケーションや開発環境では、様々な機能を提供するため、膨大なメニュー項目から目的の作業を選択するだけでも面倒になってしまいます。そこで、メニューバーの下部に頻繁に利用すると思われるメニュー項目へアクセスするボタンのコレクションを表示する手法が一般的です。例えば、ブラウザアプリケーションの戻るや進むボタンなどは、頻繁に利用される重要なボタンでしょう。
このように、メニュー項目に関連したボタンや、ユーザーが頻繁に利用する機能や選択項目をスマートに提供するコンテナをツールバーと呼びます。ツールバーは、通常はメニューバーの下部に表示され、特定のメニュー項目に簡易アクセスするために利用されますが、ペイントツールの例で挙げたように、排他的な選択項目の列挙に利用することもできます。
Swing のツールバーは javax.swing.JToolBar クラスで実装されています。 このクラスは、JComponent クラスを継承した軽量コンテナとして利用することができます。
java.lang.Object | +--java.awt.Component | +--java.awt.Container | +--javax.swing.JComponent | +--javax.swing.JToolBar
public class JToolBar extends JComponent implements SwingConstants, Accessible
JToolBar の利用方法は、他のコンテナと同様に add() メソッドからツールバーに表示するボタンなどを追加するだけです。一般的にツールバーは項目を列挙するための利用されるため、直列に、縦か横方向にコンポーネントが陳列される点などで通常のコンテナと異なります。
コンストラクタ | 解説 |
---|---|
public JToolBar() | 水平方向の新しいツールバーを作成する。 |
public JToolBar(int orientation) | 方向を指定して新しいツールバーを作成する。 |
public JToolBar(String name) | 名前を指定して新規のツールバーを作成する。 |
public JToolBar(String name, int orientation) | 指定された名前と方向で新しいツールバーを作成する。 |
メソッド | |
public void addSeparator() | デフォルトサイズのセパレータをツールバーの終端に追加する。 |
public void addSeparator(Dimension size) | 指定されたサイズのセパレータをツールバーの終端に追加する。 |
public void setOrientation(int o) | ツールバーの方向を設定する。 |
public int getOrientation() | 現在のツールバーの方向を返す。 |
public void setFloatable(boolean b) | 移動可能であるかどうかを設定する。 |
public boolean isFloatable() | 移動可能であるかどうかを返す。 |
public void setMargin(Insets m) | ツールバーのボーダとそのボタンの間のマージンを設定する。 |
public Insets getMargin() | ツールバーのボーダとそのボタンの間のマージンを返す。 |
コンストラクタか setOrientation() メソッドから方向を指定することができます。方向は SwingConstants インタフェースで宣言されているフィールド定数を利用し、水平方向を表す HORIZONTAL、垂直方向を表す VERTICAL のいずれかを指定することができます。
JToolBar クラスのツールバーの最大の特徴は、移動可能であるということです。setFloatable() メソッドで true を指定すると、ツールバーは移動可能となり、ユーザーがツールバーをドラッグすることでツールバーの方向や位置を自由に変更することができます。ユーザーが、自らの意思で自分が最も利用しやすいレイアウトに変更できるのは、デザインとして極めて柔軟性があります。つまり移動可能なツールバーは、同じコンテナ内の別の場所にドラッグしたり、ツールバー専用のウィンドウの中にドラッグアウトしたりすることができます。このプロパティはデフォルトで true に設定されています。
import javax.swing.*; public class Test extends JFrame{ public static void main(String args[]) { JFrame win = new Test(); win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); win.setBounds(10 , 10 , 400 , 300); win.show(); } private JToolBar toolBar = new JToolBar("JToolBar"); public Test() { toolBar.add(new JButton("JButton1")); toolBar.add(new JButton("JButton2" , new ImageIcon("icon1.jpg"))); toolBar.addSeparator(); toolBar.add(new JLabel("JLabel1")); getContentPane().add(toolBar); } }
コード1は、単純なボタンやラベルをツールバーに追加して、ツールバーをウィンドウに表示するプログラムです。ツールバーはデフォルトで移動可能に設定されているため、実行結果のようにマウスでドラッグして移動させることができます。移動可能な場所は同じコンテナの範囲でなければならず、コンテナの外にドラッグされると新しいウィンドウが生成され、新しいウィンドウにツールバーが表示されます。ウィンドウを閉じると、元のコンテナに収まるでしょう。