トグルボタン
2003.04.13 update.

押したらプッシュ・ポップが交互に切り替わるトグルボタンです。
「Button」クラスの引数にて「SWT.TOGGLE」を指定することにより作成します。


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.TOGGLE);
    but.setText("ボタン");
    but.setBounds(10,10,120,24);

    //イベントの設定
    but.addSelectionListener(new SelectionListener() {
      public void widgetDefaultSelected(SelectionEvent e){
      }
      public void widgetSelected(SelectionEvent e){
        Button bBut = (Button)e.widget;

        if(bBut.getSelection()){
          System.out.println("widgetSelected : ボタンが押されている");
        } else {
          System.out.println("widgetSelected : ボタンが離されている");
        }
      }
    });
		
    shell.setBounds(100,100,200,80);

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

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




「Button」のコンストラクタにて第二引数で「SWT.TOGGLE」を指定することにより、 トグルボタンを生成します。
「setText」で表示する文字列を指定しています。
「setBounds」で表示位置と表示サイズを指定しています。

「addSelectionListener」で「SelectionListener」を登録することにより、 ボタンが押された場合のイベント処理を行います。
これは、「プッシュボタン」のイベント処理と同じです。
「widgetSelected」は、ボタンが選択されたときに呼ばれます。
上記のソースでは、「Button bBut = (Button)e.widget;」により 呼ばれたボタンのオブジェクトを取得して、「getSelection()」にてボタンが プッシュ状態かポップ状態かをチェックしています。

テキストの代わりに画像を指定することもできます。
これは、「プッシュボタン」での画像の指定方法と同じです。

配置位置の指定

ボタン内の文字列・画像の配置する位置の変更を「setAlignment」にて行います。

中央に配置

but.setAlignment(SWT.CENTER);




左に配置

but.setAlignment(SWT.LEFT);




右に配置

but.setAlignment(SWT.RIGHT);