SWTのサンプル的なアプリケーションとして『HelloWorld』.class を作成してみます。以下のような極めて単純な窓とタイトルだけのプログラムです






ソース
    import org.eclipse.swt.widgets.Display;
01  import org.eclipse.swt.widgets.Shell;
  
02  public class HelloWorld {
  
03    public static void main(String[] args){
04      Display display = new Display();
05      Shell shell = new Shell(display);
06      shell.setText("Hello, World.");
07      shell.setSize(200, 100);
08      shell.open();
09      while(!shell.isDisposed()){
10        if(!display.readAndDispatch())
11          display.sleep();
12      }
13      display.dispose();
14    }
}


Line1
 
大部分のwidget(ウィジェット)は org.eclipse.swt.widgets パッケージ中で見つけることができます(ネイティブウィジェット)。

Line4
 
すべてのSWTプログラムはSWTと基礎となるwindow system (ウィンドウシステム)との間のコネクションをとるために display を作成しなければいけません。

Line
 5-7

 


これらの行では窓を作成するためのウィジェットであるshellを作成しています。Shell クラスのインスタンスがトップレベルである場合(つまりアプリケーションのためのメインウィンドウ)にはDisplayの上に作成しなければいけません(引数にdisplayを指定)。次の行ではshel lのタイトルとサイズをセットしています。これらは場合により設定するもので必ずしも設定する必要はありません。もし設定しなければタイトルは何もなく、最初の位置やサイズはオペレーションシステムによって自動的に選ばれます。

Line8

 
作成されたときにはshell は可視になっていません。この行ではshell を可視にしてデスクトップの前面に持ってきます。そしてキーがタイプされたときのためのユーザインプットのフォーカスももって行きます。

Line
 9-11







 
イベント ドリブンとは、『イベントが発生した時に、それに応じた一定の処理手順を実行する』というプログラム概念です。JavaのAWTがそうであるようにSWTでも明示的なイベントループを必要とするイベント ドリブンのユーザインターフェイスをサポートしています。これらの行では繰り返しオペレーションシステムからの次のユーザインターフェイスのイベントの読み込みと配送 (Dispatch) を行っています。もうイベントがないとき (!display.readAndDispatch()  )にはCPUから生じる次のイベントくるまで一服します (display.sleep)。このイベントループはプログラマーがアプリケーションを終えると決めているときに終わります。ほとんどのアプリケーションはメインウィンドウが閉じられたときにイベントループを終えます (!shell.isDisposed() )。

Line13

 
この行ではdisplayの破棄を行います。厳密に言えばdisplayの破棄は必ずしも必要でありません。なぜならアプリケーションが終了すると自動的にオペレーションシステムに通知されこれが起るからです。しかしdisplayのライフが完結したかどうか示されないと形式上かっこ悪いので明示的に完全にdisplayのライフを終えることができるようこのようにしています。



これらを実行すると図のようになります。







Topに戻る。

SWT-Control のTopに戻る。


.
Copyright (C) 2006- M.Watanabe All Rights Reserved.

SWT HelloWorld