ラベル
2003.04.12 update.

ウィジットの1つである「ラベル」の制御方法です。
ラベルは、文字列の表示や画像の表示(表示だけ)を行うウィジットです。
編集などはできません。


import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;

public class swtTest {

  public static void main(String argv[]){

    Display display = new Display();
    Shell shell = new Shell(display);

    //ウィンドウのタイトルを指定
    shell.setText("swtTest");

    Label label = new Label(shell,SWT.BORDER);
    label.setText("ラベルです。");
    label.setBounds(10,10,100,30);

    shell.setBounds(100,100,200,100);

    //イベントループ
    shell.open();
    while (!shell.isDisposed()){
      if (!display.readAndDispatch()){
        display.sleep();
      }
    }

    //破棄処理
    display.dispose();
  }
}


実行すると、以下のように表示されます。



ここでは、Layoutを用いずにウィンドウ内の自由な位置に「Label」を 配置しています。
「Label label = new Label(shell,SWT.BORDER);」にて、外枠付きの「ラベル」を生成します。
「setText」にて、表示する文字列を指定します。
「setBounds」にて、ウィンドウ(Shell)の左上からの相対位置(10,10)・サイズ(200,100)で ラベルを配置しています。

このほかに、ラベルのスタイルの指定・文字表示位置(Align)の調整・色変更・画像の貼り付け、などができるようになっています。
代表的な機能を説明していきます。

ラベルのスタイル

Labelのコンストラクタにて、第二引数にスタイルを指定します。
以下のようなスタイルがあります。

枠を表示しない

Label label = new Label(shell,SWT.NONE);





枠を表示する

Label label = new Label(shell,SWT.BORDER);





水平線を表示する

Label label = new Label(shell,SWT.SEPARATOR | SWT.HORIZONTAL);
label.setBounds(10,10,100,30);




この場合は、「setText」による文字列表示は無効になります。
線を表示するだけです。

垂直線を表示する

Label label = new Label(shell,SWT.SEPARATOR | SWT.VERTICAL);
label.setBounds(10,10,100,50);




この場合は、「setText」による文字列表示は無効になります。
線を表示するだけです。

ラベルの配置位置

「setAlignment」にて、左寄せ・右寄せ・中央寄せできます。

左寄せ(デフォルト)

label.setAlignment(SWT.LEFT);




右寄せ

label.setAlignment(SWT.RIGHT);




中央寄せ

label.setAlignment(SWT.CENTER);




文字色・背景色の指定

これは、どのウィジットでも同じですが、「setForeground」で前景色(文字色) を指定、「setBackground」で背景色を指定します。


label.setForeground(new Color(display,255,0,0));
label.setBackground(new Color(display,128,128,160));





フォントの指定

「setFont」にて、
フォントのサイズを変更したり・スタイル(ボールド・イタリック)変更・フォントの種類を変更することができます。
これも、その他のウィジットでも同じように使用することができます。

フォントサイズの変更

label.setFont(new Font(display,"",14,SWT.NORMAL));


Fontの第三引数にて、フォントの高さをポイント指定しています。




フォントスタイルの変更

label.setFont(new Font(display,"",14,SWT.BOLD));


Fontの第四引数にて、フォントのスタイル(SWT.NORMAL/SET.BOLD/SWT.ITALIC)を指定しています。




フォントの種類の変更

label.setFont(new Font(display,"MS 明朝",14,SWT.BOLD));


Fontの第二引数にて、フォントの種類を指定しています。
OS依存になる可能性もありますので、指定を控えたほうがいいかもしれません。




画像を貼り付け

ラベル内に画像を貼り付けます。
この場合は、「setText」での文字列指定は無効になります。

以下の例は、「yajirusi.gif」を読み込んで画像を表示しています。


label.setImage(new Image(display,"yajirusi.gif"));





もし画像が透過GIFの場合は、Labelの「getBackground」にて ラベルの背景色を取得してきて、それをImageの「setBackground」で 指定すると透過部分が透明に見えます。


Image img = new Image(display,"yajirusi.gif");
img.setBackground(label.getBackground());
label.setImage(img);