Component - 1:1 対応 -
ここではコンポーネントを提供するクラスのなかで,Swing と SWT が 1:1 に対応するクラスについて,Swing から SWT への変換方法を説明します.
1:1 対応クラス
1:1 対応となるクラスは,次の表のとおりです.
機能 | Swing | SWT |
---|---|---|
JComponent | Control | |
パネル | JPanel | Composite |
スクロール領域 | JScrollPane | ScrolledComposite |
スクロールバー | JScrollBar | ScrollBar |
分割領域 | JSplitPane | SashForm |
タブ | JTabbedPane | TabFolder |
テーブル | JTabel | Table |
ツリー | JTree | Tree |
フレーム | JFrame | Shell |
ラベル | JLabel | Label |
コンボボックス | JComboBox | Combo |
ファイルダイアログ | FileDialog | FileDialog |
カラーダイアログ | JColorChooser | ColorDialog |
メッセージダイアログ | JOptionPane | MessageBox |
ここでは,パネルおよびラベルの変換方法について説明します.その他のクラスもパネルと同様に変換することができます.
Swing から SWT への変換方法
Swing
Swing ではラベルを表すクラスに JLabel クラスがあります.JLabel クラスの主なコンストラクタは次のようになっています.
- public JLabel(String text)
- 指定されたテキストのラベルを作成します.
これを new することによって,ラベルを作成できます.パネルを表すクラスとして JPanel クラスがあります. JPanel クラスの主なコンストラクタは,次のようになっています.
- public JPanel()
ラベルをパネルに貼り付けるには,JPanel クラスの add() メソッドを使います.
- public Component add(Component comp)
従って,パネルにラベルを埋め込む場合は,次のように記述します.
JLabel label = new JLabel("ラベル");
JPanel panel = new JPanel();
panel.add(label);
SWT
SWT では,ラベルを表すクラスに Label クラスがあります.ラベルクラスの主なコンストラクタ,メソッドは次のようなものがあります.
- public Label(Composite parent, int style)
- parent で指定したコンポーネントにラベルを貼り付けます.style は,ラベルのスタイルを指定します.style には SWT クラスの定数を指定できます.
- public void setText (String string)
- ラベルのテキストを指定します.
- public void setParent(Composite parent)
- 親となるコンポーネントを指定します.
- public void setSize(int width, int height)
- ラベルのサイズを指定します.
SWT では,パネルを表すクラスに Composite クラスがあります.Composite クラスの主なコンストラクタは次のとおりです.
- public Composite(Composite parent, int style)
- parent で指定したコンポーネントにパネルを埋め込みます.
ラベルをパネルに埋め込む場合は,次のように記述します.
Composite compo = new Composite(shell, SWT.EMBEDDED);
Label label = new Label(compo, SWT.CENTER);
Swing ⇒ SWT
パネルにラベルを埋め込む Swing の記述を SWT に変換すると,次のように変換できます.
// Swing------->
JLabel label = new JLabel("ラベル");
JPanel panel = new JPanel();
panel.add(label);
// SWT
Label label = new Label(dummy, SWT.NULL);
label.setText("ラベル");
Composite panel = new Composite(shell, SWT.EMBEDDED);
label.setParent(panel);