TOPシステム開発> SWTの基礎:簡単なSWTアプリケーション
まるごとEclipse!
Visual Editorを使ったSWT開発

第1回:SWTの特徴

著者:五座 淳一(GOZA, Junichi)   2006/3/13
前のページ  1  2
SWTの基礎:簡単なSWTアプリケーション

   SWTのコーディング方法を知らなくても、GUIビルダーを使えばSWTアプリケーションを開発することできますが、開発を始める前に基本的なクラス構成などは知っておいたほうがよいでしょう。

   リスト1は、Hello Worldが表示されるだけの簡単なSWTアプリケーションです。非常に短いプログラムですが、SWTに関して多くのことを学ぶことができます。1行ずつ詳しく説明していきましょう。

リスト1:簡単なSWTアプリケーション
1 import org.eclipse.swt.SWT; ------------------------(1)インポート宣言
2 import org.eclipse.swt.widgets.*;
3
4 public class SampleSWT {
5    public static void main(String[] args) {
6       Display display = new Display(); ----(2)Displayオブジェクト作成
7       Shell shell = new Shell(display); ----------(3)ウィジェット作成
8       Label label = new Label (shell, SWT.BORDER);
9       label.setText("Hello World");
10       label.pack();
11       shell.pack();
12       shell.open();
13
14       while (!shell.isDisposed()) { -------------(4)メッセージループ
15          if (!display.readAndDispatch())
16             display.sleep();
17       }
18       display.dispose(); ----------------------------(5)リソース破棄
19    }
20 }


1. インポート宣言

   1行目、2行目には、SWTライブラリーを使用するためのインポート宣言が記述されています。SWTライブラリーにはすべてorg.eclipse.swt.から始まるパッケージ名が付けられています。SWTアプリケーションを開発する上でよく使うパッケージを、表3に示します。

パッケージ名 概要
org.eclipse.swt 定数や例外クラス群が定義されている
org.eclipse.swt.graphics 基本的な描画のためのクラス群が定義されている
org.eclipse.swt.layout レイアウト関連のクラス群が定義されている
org.eclipse.swt.widgets ウィンドウやボタンなどのウィジェットクラス群が定義されている

表3:よく使うパッケージ一覧


2. Displayオブジェクト作成

   6行目で使用しているDisplayクラスは、すべてのSWTアプリケーションにおいて作成される非常に重要なクラスです。このクラスは動作環境のプラットフォームとSWTアプリケーションの橋渡しを責務としています。このクラスを使用して動作プラットフォームの情報を取得できます。


3. ウィジェットの作成

   7行目でウィンドウを描画するためのShellウィジェットを作成しています。8行目、9行目でウィンドウにテキストを表示するためのLabelウィジェットを作成しています。コンストラクター引数には親ウィジェットとウィジェットの表示スタイルを指定しています。

   ウィンドウとなるShellウィジェット以外のウィジェットには、必ず親ウィジェットを必要とします。

   10行目と11行目のpack()メソッドは、ウィジェットのサイズを必要最小限の大きさに指定します。


4. メッセージループ

   14行目から17行目にメッセージループが実装されています。メッセージループとは、UIを操作したイベントなどすべてのメッセージを随時処理するためのループのことで、メッセージの読み込みと通知をアプリケーション終了直前まで繰り返し行っています。


5. リソース破棄

   18行目はDisplayオブジェクトが保持しているリソースを破棄しています。

   Labelウィジェットのように親ウィジェットを持つオブジェクトに関しては、親ウィジェットのリソースが破棄された時点で自動的に子ウィジェットのリソースも破棄されますが、親ウィジェットを持たないオブジェクトについては、明示的にdispose()メソッドを呼び出して使用しているリソースを破棄する必要があります。

前のページ  1  2


株式会社DTS 五座 淳一(GOZA, Junichi)
著者プロフィール
株式会社DTS 五座 淳一(GOZA, Junichi)
技術部所属。入社以来、交換機や携帯電話、Webシステムなど様々な開発を担当する。現在はRuby on Railsを使用した開発に携わり、生産性の高さに驚かされている。

INDEX
第1回:SWTの特徴
  はじめに
SWTの基礎:簡単なSWTアプリケーション