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