パーソナルツール
現在の場所: ホーム SwingとSWT チュートリアル コンポーネント編 Component - N:1 対応 Case 1-
文書操作

Component - N:1 対応 Case 1 -

作成者 fujisaki 最終変更日時 2008年12月01日 02時03分

ここではコンポーネントを提供するクラスのなかで,Swing と SWT が N:1 Case 1 に対応するクラスについて,Swing から SWT への変換方法を説明します.N:1 Case 1 に対応するクラスとは,Swing の N 個のクラスの機能が,SWT の1つのクラスに全て含まれているクラスです.

N:1 対応 Case 1 クラス

N:1 対応 Case 1 に分類されるクラスは,次の表のとおりです.

N:1 対応 Case 1 クラス
機能 Swing SWT
プッシュボタン JButton Button
チェックボックス JCheckBox
ラジオボタン JRadioButton
トグルボタン JToggleButton
アローボタン BasicArrowButton
テキストコンポーネント JTextComponent Text
エディタ領域 JEditorPane
テキスト領域 JTextPane
テキストエリア JTextArea
テキストフィールド JTextField
フォーマットされたテキストフィールド JFormattedTextField
パスワードフィールド JPasswordField

ここでは,ボタンの変換方法について説明します.


変換方法

Swing

Swing ではボタンを表すクラスに,JButton クラスや JRadioButton クラス,JCheckBox クラスなどがあります. プッシュボタンは JButton クラス,ラジオボタンは JRadioButton クラスなど,ボタンの種類によって各クラスが用意されています.

JButton や JRadioButton の主なコンストラクタは,次のようになっています.
  • public JButton()
    アイコンもテキストもないプッシュボタンを生成します.
  • public JButton(Icon icon)
    指定されたアイコンの付いたプッシュボタンを生成します.
  • public JButton(String text)
    指定されたテキストのついたプッシュボタンを作成します.

ボタンがクリックされたときの動作を設定するためには,addActionListener() メソッドで ActionListener を追加し,ActionListener インターフェースのactionPerformed() にクリック時の動作を書き込みます.

従って,ボタンをパネルに埋め込むプログラムは次のように記述できます.

JButton button = new JButton("ボタン"); 

button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
// ボタンクリック時の動作
}
});

panel.add(button);

JButton には ActionListener の他に,ItemListener や MouseListener などのリスナーも追加できます.


SWT

SWT ではボタンを表すためのクラスに Button クラスがあります.Button クラスのコンストラクタは次のようになっています.
  • public Button(Composite parent, int style)
    parent で指定したコンポーネントに埋め込むボタンを生成します.style はボタンの種類を指定するもので,SWT クラスの定数が指定できます.

Swing ではボタンの種類ごとにクラスがあるのに対し,SWT では Button クラスのコンストラクタの第2引数 style に指定された定数によって,各種類のボタンが生成されます.従って,

Button push = new Button(parent, SWT.PUSH);

と記述するとプッシュボタンが,

Button radio = new Button(parent, SWT.RADIO);

と記述するとラジオボタンが生成されます.Swing のボタンを表す各クラスと SWT の定数の対応関係を次の表のとおりです.

種類 Swing のクラス SWT の定数
プッシュボタン  JButton  SWT.PUSH 
チェックボックス  JCheckBox  SWT.CHECK 
ラジオボタン  JRadioButton  SWT.RADIO 
トグルボタン  JToggleButton  SWT.TOGGLE 
アローボタン  BasicArrowButton  SWT.ARROW 

Button クラスでは,テキストを設定するために setText() メソッドを使用します.

public void setText(String text)

Button クラスではクリック時の動作を設定するために,addSelectionListener() メソッドで SelectionListener を追加し,SelectionListener インターフェースの widgetSelected() メソッドにクリック時の動作を書き込みます.

従って,SWT では次のようにボタンをパネルに埋め込みます.

Button button = new Button(panel, SWT.PUSH);
button.setText("ボタン");
button.addSelectionListener(new SelectionListener() {
	public void widgetSelected(SelectionEvent se) {
             // クリック時の動作
	}
	
	public void widgetDefaultSelected(SelectionEvent se) {
	    widgetSelected(se);
	}
    });

Swing ⇒ SWT

N:1 対応 Case 1 に分類されるクラスは,次のように Swing から SWT へ変換できます.

// Swing
JButton button = new JButton("ボタン");
button.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent ae) {
	    JButton b = (JButton)ae.getSource();
	    System.out.println(b.getText());
	}
    });
	
panel.add(button);

---------->

// SWT
Button button = new Button(dummy, SWT.PUSH);
button.setText("ボタン");
button.addSelectionListener(new SelectionListener() {
          public void widgetSelected(SelectionEvent ae) {
              Button b = (Button)ae.getSource();
              System.out.println(b.getText());
          }

          public void widgetDefaultSelected(SelectionEvent ae) {
              widgetSelected(ae);
          }
    });

button.setParent(panel);