主なコンポーネントを利用してみる
だいぶコンポーネント類の使い方がわかってきたと思います。では、JLabel以外のコンポーネントも組み込んでみることにしましょう。
package codezine.java; import java.awt.*; import javax.swing.*; public class Sample extends JFrame { public Sample(){ this.setSize(300,200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLayout(null); // JLabelの組み込み String msg0 = "<html><h2>JLabel Sample</h2>"; JLabel label = new JLabel(msg0); label.setSize(200,30); label.setLocation(20,20); this.add(label); // JTextFieldの組み込み JTextField field = new JTextField(); field.setSize(200,20); field.setLocation(20,50); this.add(field); // JButtonの組み込み JButton button = new JButton("JButton"); button.setSize(100,25); button.setLocation(20,80); this.add(button); // JCheckBoxの組み込み JCheckBox check = new JCheckBox("JCheckBox"); check.setSize(100,20); check.setLocation(20,110); this.add(check); // JRadioButtonの組み込み JRadioButton radio = new JRadioButton("JRadioButton"); radio.setSize(200,20); radio.setLocation(20,140); this.add(radio); } public static void main(String[] args) { Sample sample = new Sample(); sample.setVisible(true); } }

ここでは、全部で5種類のコンポーネントを作成し組み込んでいます。それぞれ次のようなクラスを使います。
- JLabel――テキストを表示するもの。既に説明済みです。
- JTextField――1行だけのテキストを入力するためのフィールドです。
- JButton――クリックして何かの処理を実行させるプッシュボタンです。
- JCheckBox――クリックしてON/OFFするチェックボタンです。
- JRadioButton――いくつかの項目から1つを選ぶラジオボタンです。
JButton、JCheckBox、JRadioButtonといったボタン類は、newする際にStringを引数に渡すことで、そのテキストを表示するボタンを作成できます。後は、JLabelと同様、位置や大きさを設定してaddするだけです。こうしてインスタンスを作り、ただaddするだけで、ちゃんとJButtonはマウスでクリックできますし、JCheckBoxやJRadioButtonはマウスでクリックしてON/OFFできます。
ただし、このままでは、JButtonをクリックしても何も起こりませんし、複数のJRadioButtonを作成しても自動的に1つが選択されるようにはなりません。ここで行ったのは「その部品を用意して表示する」ということだけです。これらの動作を設定するためには、それなりの処理を別に用意する必要があります。あくまで今回行ったのは「作って表示するだけ」です。
まとめ
JFrameとコンポーネントを使って画面にウインドウを表示するプログラムを作成しました。いろいろと新しいクラスやメソッドが登場しましたが、どれもそれほど複雑なものではありません。何度かソースコードを書いて動かしてみれば、大体の使い方がわかってくることでしょう。レイアウトマネージャに関する部分が少々わかりにくいかも知れませんが、とりあえずは「デフォルトの状態(BorderLayoutというのが設定された状態)」と「setLayout(null)でレイアウトマネージャをOFFにした状態」の使い方が分かれば、現段階ではOKと考えましょう。これで簡単なウインドウのレイアウトぐらいはできるようになりますから。
ここまでやってみて「なんだ、Swingは難しいというけど、意外に簡単じゃないか」と思われたかもしれません。基本的なコンポーネントを組み込んでレイアウトする、という最も基本的な部分に関しては、AWTもSwingもたいして違いはなく、割と直感的に作れるようになっているのです。
ただし、作ったコンポーネントを実際に利用するとなると、少しずつ複雑な仕組みを理解していかなければいけなくなります。例えばボタンをクリックして何かを実行させるには、「イベント処理」というものを理解しなければいけません。次回は、このイベント処理を中心に、コンポーネントの使い方を説明していくことにしましょう。
