JFrameを使った基本コード


それでは、実際にSwingを使ってみることにしましょう。SwingはAWTとは別のGUIフレームワークですが、しかし基本的な部分はAWTとかなり似ています。AWTでは、一般的なウインドウを使ったアプリケーションを作成する場合、Frameクラスを継承してクラスを定義しました。

Swingでもこれは同様です。ただし、用意されているクラス名はFrameではなく「JFrame」となります。では、ごく初歩的なウインドウ表示プログラムを作成してみましょう。ここでは、jp.allabout.javaというパッケージに「SampleApp」という名前でクラスを作成してみます。

package jp.allabout.java;

import java.awt.*;
import javax.swing.*;

public class SampleApp extends JFrame {
  private static final long serialVersionUID = 1L;

  public SampleApp(){
    this.setSize(new Dimension(300,200));
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  
  public static void main(String[] args) {
    new SampleApp().setVisible(true);
  }
}

ウインドウが1枚だけ表示される。これが、Swingのウインドウだ。


ごく単純なものですね。単に、何もないウインドウを1枚画面に表示しているだけです。そのままウインドウのクローズボックスをクリックすればプログラムは終了します。なんていうこともないサンプルですが、この短いサンプルの中からSwingのもっとも基本となる知識がいくつか見て取れます。

・Swingのコンポーネントは、javax.swingパッケージ!
AWTの場合、コンポーネント類はjava.awtパッケージにまとめられていました。Swingの場合には、javax.swingというパッケージになります。

・コンポーネント名は「J」がつく!
ここでは、「JFrame」というコンポーネントを利用しました。これは、AWTでウインドウを表示するのに使う「Frame」のSwing版といってよいでしょう。Swingにも、AWTに用意されていたコンポーネント類とほぼ同じものが用意されています。ただし、同じクラス名だと混乱してしまうので、Swing側ではクラス名の冒頭に「J」がつきます。FrameならばJFrame、ButtonならばJButtonといった具合です。

・JFrameにはクローズボックスの処理が標準である
ここでは、Swing特有の処理が1行だけ書かれています。「setDefaultCloseOperation」というメソッドです。これはJFrameに用意されているもので、クローズボックスをクリックしてウインドウを閉じようとしたときの処理方法を指定するものです。これは、JFrameに用意されているクラスフィールドを指定します

ここでは、JFrame.EXIT_ON_CLOSEというものを設定していますね。これは、ウインドウを閉じてそのままプログラムを終了する、という処理方法を示すものです。これを設定することで、クローズボックスをクリックしたらプログラムが終了するようになっていたのです。AWTのように、いちいちWindowListenerを組み込まなければいけないのと比べるとずいぶんと簡単ですね。