Component - N:1 対応 Case 1 -
ここではコンポーネントを提供するクラスのなかで,Swing と SWT が N:1 Case 1 に対応するクラスについて,Swing から SWT への変換方法を説明します.N:1 Case 1 に対応するクラスとは,Swing の N 個のクラスの機能が,SWT の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);