| 1.Swing 〜コンテナの使いかた〜 |
AWT を拡張した Swing コンテナについて説明します。
| (1) AWT の拡張 |
Swing はJDK1.1.X では別パッケージとなっていましたが、Java2(SDK1.2) からは標準の API に含まれるようになりました。ですから、JDK1.1.X を使って開発する場合は Swing のクラスをダウンロードして CLASSPATH を設定する必要があります。またブラウザを使って動かす場合は JavaPlug-in を使って、ブラウザの JVM を Java2 環境にする必要があります。それより、Java2(SDK1.2)以降をインストールしたほうが賢明です。
| (2) Swing の特徴 |
| (3) Swing のコンテナ |
import java.awt.*;
import javax.swing.*;
class JFrameSample {
public static void main(String args[]) {
JFrame f = new JFrame();
f.setSize(200,200);
Container c = f.getContentPane();
c.setLayout(new FlowLayout());
c.add(new JButton("OK"));
f.setVisible(true);
}
}
|
C:\java_test>javac JFrameSample.java C:\java_test>java JFrameSample |

コンテナの中にはいくつか名前のつけられたレイヤーがあり、実際に目に見える場合は、これらのレイヤーを重ね合わせた結果になります。glassPane は一番上のレイヤーなので、マウスのドラッグ時などの描画用に使われるレイヤーです。
layeredPane は多層構造をもちます。これは1枚のレイヤーではありません。実際には JLayredPane クラスを利用して好きなだけレイヤーを作成できます。しかし、使いやすくするため、ある深さで名前がつけれられいます。たとえば、さきほどの例でも使用した、コンポーネントの張りつけ用のレイヤーの contentPane は深さが-30000のレイヤーです。
少し難しいような気がしますが、覚えておくことは1つだけで、多層構造をもつコンテナを使う場合は、getContentPane( ) で contentPane を獲得してからコンポーネントの張り付けを行うということです。
| (4) ブラウザで実行するために |
import java.awt.*;
import javax.swing.JApplet;
import javax.swing.JButton;
public class JAppletSample extends JApplet {
public void init() {
setSize(200,100);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(new JButton("OK"));
}
}
|
<APPLET CODE=JAppletSample.class width=200 height=100></APPLET> |
C:\java_test>javac JAppletSample.java C:\java_test>appletviewer JAppletSample.html |

インターネットエクスプローラやネットスケープナビゲータなど、おおくのブラウザではブラウザのJVMがJDK1.1.X にしか対応していません(ネットスケープ6では Java2 に対応しているようです)。このようなブラウザでは Swing コンポーネントがサポートされていないため、Swing コンポーネントを使ったプログラムは動きません。
では、ブラウザをどうしたらJava2 環境にできるかというと、SDK1.2 以上をインストールするか、実行だけできれば良いのであれば、JRE1.2(JavaRuntimeEnvironment) 以上をインストールする必要があります。SDK をインストールした場合は自動的に JRE がインストールされます。
これでブラウザが Java2 の JVM を利用する準備ができましたが、もう1つしておくことがあります。それはアプレットの実行のときには APPLET タグを書きますが、これを OBJECT タグ、または EMBED タグに置き換えるということです。しかし、この作業は非常に面倒なので、HTMLConverter というツールを使います。詳しくはこちらのページをみてください。
詳しくは JavaSoft のホームページの JavaPlug-in を見てください。