プッシュボタン
2003.04.13 update.

何かアクションを起こす場合のプッシュボタンです。
「Button」クラスを使用します。


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");

    Button but = new Button(shell,SWT.PUSH);
    but.setText("ボタン");
    but.setBounds(10,10,120,24);

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

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




「Button」のコンストラクタの第二引数にて「SWT.PUSH」を指定することにより、 プッシュボタンを生成します。

ボタンイベントの受け取り


but.addSelectionListener(new SelectionListener() {
  public void widgetDefaultSelected(SelectionEvent e){
    System.out.println("widgetDefaultSelected");
  }
  public void widgetSelected(SelectionEvent e){
    System.out.println("widgetSelected");
  }
});


「Button」の「addSelectionListener」にて、ボタンが選択された場合のイベントを設定します。
「widgetDefaultSelected」は、デフォルトボタンが選択された場合に呼ばれるようですが、どうも呼ばれていない感じです。
「widgetSelected」は、ボタンが選択された場合に呼ばれます。


矢印ボタン

上下左右の矢印のついたボタンを表示します。
表示文字列・画像表示と併用できません。

Buttonのコンストラクタにて、「SWT.ARROW」と「SWT.LEFT / SWT.RIGHT / SWT.UP / SWT.DOWN」を 指定します。


Button but = new Button(shell,SWT.ARROW | SWT.LEFT);




画像の指定

ボタンに画像を指定します。
この場合は、「setText」の文字列指定は無効になります。


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




透過GIF画像を貼り付ける場合の背景色を透明にする場合は、以下のようにします。


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




Buttonの背景色を「getBackground」で取得し、Imageの「setBackground」の色を指定しています。