第4回 SWTでHSQLDB管理画面を作成


萩原 巧
リトルソフト株式会社
2006/10/26


HSQLDB管理画面の作成

 作成する画面の概要の説明を受け、新たなプラグインのインストールを行った田中君。いよいよ、実際に画面の構築を行う。

長尾君 「早速だけど、ユーザーインターフェイスのクラスを作成しよう。[新規]メニューを開いてみると、一番下に、[Visual Class]が追加されているから、それを選択してみよう」

上記[Visual Class]が表示されていない場合、[Visual Editor]プラグインは正しくインストールされていない

新規ビジュアルクラス作成ダイアログ

 [ビジュアルクラス作成ダイアログ]は、SWTやSwing/AWTのコンテナクラスを作成することができます。以下のように設定を行ってください。

項目名称 内容
パッケージ hsqldb.composites] と設定してください
名前(クラス名 HSQLPreferencePageComposite] と設定してください
スーパークラス org.eclipse.swt.widgets.Composite] と設定してください。
Style欄のツリービューから[SWT]―[Composite]を選択すると、スーパークラスが自動設定されます

コラム Compositeとは
HSQLPreferencePageCompositeのスーパークラスである、[org.eclipse.swt.widgets.Composite]は、SWTのコンポジット(Composite)と呼ばれるクラスです。SWTにおけるCompositeクラスとは、ラベルやテキストなどの各種ユーザーインターフェイスコンポーネントを配置するためのコンテナと考えます。Visual Editorを使用すると、コンポジットに対してドラッグアンドドロップで各種ユーザーインターフェイスコンポーネントを配置することができます。

 終了ボタンをクリックすると、クラスが作成され、編集画面が表示されます。

ユーザーインターフェイス編集画面

 このユーザーインターフェイス編集画面では右側に配置されている[Palette]から、SWT Controls欄にあるコンポーネントを選択して、ソースコードの上部にあるコンポジットに張り付けを行います。

 コンポーネントのプロパティを変更する場合は、対象となるコンポーネントを選択して、プロパティエディタを編集してください。

Labelコンポーネントのプロパティ[text]が編集できます

長尾君 「さて、ここまで進んだら、張り付けを行うコンポーネントを確認してみよう。今回作成するHSQLDB設定画面は以下のコンポーネントを張り付けるんだ」


長尾君 「田中君、まずはこのとおりにコンポーネントを配置しよう」
田中君 「了解っ」

 田中君はVisual Editorを活用してコンポーネントの配置を行った。

HSQLPreferencePageCompositeクラス ユーザーインターフェイス

田中君 「これがHSQLDB設定画面の見た目になるんだよね。すごく簡単にできたよ、画面を自分で考えて作るって楽しいね」
長尾君 「ここで、HSQLPreferencePageCompositeクラスのソースコードを見てみよう」

自動生成されたHSQLPreferencePageComposite クラス
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;

public class HSQLPreferencePageComposite extends Composite {

private List listDBList = null;
    private Label labelDBName = null;
    private Label label = null;
    private Label labelDBPath = null;
    private Label labelDBPort = null;
    private Text textDBPath = null;
    private Text textDBPort = null;
    private Button buttonAdd = null;
    private Button buttonRemove = null;

    public HSQLPreferencePageComposite(Composite parent
                                    , int style) {
        super(parent, style);
        initialize();
    }

    private void initialize() {
        listDBList = new List(this
            , SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
        listDBList.setLocation(new Point(8,25));
        listDBList.setSize(new Point(160,395));

        labelDBName = new Label(this, SWT.NONE);
        labelDBName.setBounds(new Rectangle(9,8,160,12));
        labelDBName.setText("HSQLDB Database 名称");


        label = new Label(this, SWT.NONE);
        label.setBounds(new Rectangle(413,-241,27,12));
        label.setText("Label");

        labelDBPath = new Label(this, SWT.NONE);
        labelDBPath.setBounds(new Rectangle(174,9,199,12));
        labelDBPath.setText("HSQLDB Database パス");

        labelDBPort = new Label(this, SWT.NONE);
        labelDBPort.setBounds(new Rectangle(173,49,118,12));
        labelDBPort.setText("HSQLDB ポート");

        textDBPath = new Text(this, SWT.BORDER);
        textDBPath.setBounds(new Rectangle(173,24,262,18));
        textDBPort = new Text(this, SWT.BORDER);
        textDBPort.setBounds(new Rectangle(173,64,71,18));
        buttonAdd = new Button(this, SWT.NONE);

        buttonAdd.setText("追加");
        buttonAdd.setSize(new Point(69,22));
        buttonAdd.setLocation(new Point(297,398));

        buttonRemove = new Button(this, SWT.NONE);
        buttonRemove.setLocation(new Point(368,398));
        buttonRemove.setText("削除");
        buttonRemove.setSize(new Point(69,22));

        setSize(new Point(445,428));

        // 以下のソースを追加してください。
        // 初期状態では編集不可に設定します。
        textDBPath.setEditable(false);
        textDBPort.setEditable(false);
    }
}

田中君 「結構長いソースが作成されているね」
長尾君 「ユーザーインターフェイスを構成するコンポーネントがクラスのメンバになっているんだ。そのうえで、[initialize]メソッド内で、コンポーネントのプロパティが設定されている。これは、Visual Editorでマウスを使って設定した各種の内容がJavaのソースコードに反映されていると解釈してOKだよ
  「例えば、Labelコンポーネント[labelDBName]の表示内容を変更したい場合は、labelDBName.setText(“文字列”);とコーディングすればよいんだ」
  「ここまでできたら、作成した画面の確認を行ってみよう。[実行]メニューの[実行]から[Java Bean] を選択すると、作成した画面を持つアプリケーションが起動するよ」

[Java Bean]を選択して起動を行う

HSQLPreferencePageCompositeクラス ユーザーインターフェイスを持つアプリケーション

田中君 「まるで1つのアプリケーションが起動しているかのようだね」
長尾君 「そう、これはVisual Editorの機能として、作成した画面をJavaのアプリケーションとして起動して、動作を確認することができるんだ。もちろんこのアプリケーションでは、テキストの入力やボタンクリックなどの動作を行うことができるんだよ」

2/3

Index
第4回 SWTでHSQLDB管理画面を作成
Page1
HSQLDB管理画面の概要とVisual Editorの導入
Page2
HSQLDB管理画面の作成
Page3
HSQLDB起動画面の作成とEclipseの設定画面への割り当て



Java Solution全記事一覧



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間