|
1.通常のアプレット
JavaのフォームをHTMLに表示するにはアプレットのクラスを利用することになりますが、GUIの種類で表示方法が変わります。
まずは通常のアプレットを表示してみます。AWT(Abstract Window Toolkit) を利用したアプレットと、同じAWTを拡張したSwingを利用したアプレットを作成します。
フォームは1つのラベルと2つのボタンを貼り付け、ボタンはそれぞれ"表示"、"消去"とし、ボーダーレイアウト(BorderLayout) で配置します。
「表示」ボタンをクリックするとラベル上に "Hello World!" と表示し、「消去」ボタンでその表示をクリアするという仕様です。(以降のテストで全て同じ)
|
 |
|
|
表示上のAWTとSwingとではデフォルトの背景色、フォント、ボタンの形が異なります。
AWTでは各プラットホームのOSに合わせた形で表示されますが、Swingではどのプラットホームでも同じ形で表示されます。
|
2.プログラムの確認1
上記の通常のアプレットのプログラムの違いは、AWTの方ではフローレイアウト(FlowLayout) がデフォルトでアプレット(Applet) 上にコンポーネント(部品)を貼りますが、
Swingの方ではボーダーレイアウト(BorderLayout) がデフォルトでアプレット(JApplet) のコンテントペイン(ContentPane) 上にコンポーネント(部品)を貼ります。
Swingでのコンポーネント(部品)はトップレベルコンテナ(JApplet, JFrame, JDialog)に直接表示されるのではなく、中間のコンテントペイン上に表示されます。
|
 |
| |
1: import java.applet.Applet;
2: import java.awt.*;
3: import java.awt.event.*;
4:
5: public class HelloApplet extends Applet implements ActionListener{
6: Label label; // ラベル用のフィールド
7: Button b1, b2; // ボタン用のフィールド
8:
9: public void init(){
10: this.setLayout(new BorderLayout()); // BorderLayoutにする
11:
12: label = new Label("", Label.CENTER); // Labelオブジェクトの生成
13: Panel p1 = new Panel(); // Panelオブジェクトの生成
14: b1 = new Button("表示"); // Buttonオブジェクトの生成
15: b2 = new Button("消去"); // Buttonオブジェクトの生成
16: p1.add(b1); // パネルにボタンを置く
17: p1.add(b2); // パネルにボタンを置く
18: b1.addActionListener(this); // イベントリスナーを設定
19: b2.addActionListener(this); // イベントリスナーを設定
20:
21: this.add(label, BorderLayout.CENTER); // ラベルを置く
22: this.add(p1, BorderLayout.SOUTH); // パネルを置く
23: }
24:
25: public void actionPerformed(ActionEvent e){
26: if (e.getSource() == b1){ // b1が押されたら
27: label.setText("Hello World!"); // labelに文字列を設定
28: } else if(e.getSource() == b2){ // b2が押されたら
29: label.setText(""); // labelの文字列を消す
30: }
31: }
32: }
|
|
| 通常のアプレットのAWT版 (HelloApplet.java) |
|
10行目 :FlowLayout がデフォルトなので、BorderLayout に設定することを明記する。
21-22行目:自分自身(Applet)上にコンポーネント(部品)を貼る。
|
 |
| |
1: import java.awt.*;
2: import java.awt.event.*;
3: import javax.swing.*;
4:
5: public class HelloJApplet extends JApplet implements ActionListener{
6: JLabel label; // ラベル用のフィールド
7: JButton b1, b2; // ボタン用のフィールド
8:
9: public void init(){
10: Container c = getContentPane(); // アプレットの内容表示域を得る
11: c.setLayout(new BorderLayout()); // BorderLayoutにする(default)
12:
13: label = new JLabel("", JLabel.CENTER); // JLabelオブジェクトの生成
14: JPanel p1 = new JPanel(); // JPanelオブジェクトの生成
16: b1 = new JButton("表示"); // JButtonオブジェクトの生成
17: b2 = new JButton("消去"); // JButtonオブジェクトの生成
18: p1.add(b1); // パネルにボタンを置く
19: p1.add(b2); // パネルにボタンを置く
20: b1.addActionListener(this); // イベントリスナーを設定
21: b2.addActionListener(this); // イベントリスナーを設定
22:
23: c.add(label, BorderLayout.CENTER); // ラベルを置く
24: c.add(p1, BorderLayout.SOUTH); // パネルを置く
25: }
26:
27: public void actionPerformed(ActionEvent e){
・・・
(上と同じ)
・・・
28: }
29: }
|
|
| 通常のアプレットのSwing版 (HelloJApplet.java) |
|
10行目 :アプレット(JApplet) 上のコンテントペイン(ContentPane) を得る。
11行目 :BorderLayout に設定しているが、デフォルトなので省略しても良い。
23-24行目:コンテントペイン(ContentPane)上にコンポーネント(部品)を貼る。
注)各コンポーネント(部品)のクラス名はSwingでは先頭にJ が付加されています。
|
|