フレームの作成と表示

広告

フレームを作成するにはJFrameクラスを使用します。JFrameクラスは次のように定義されています。

public class JFrame
extends Frame implements WindowConstants, Accessible, RootPaneContainer
java.lang.Object
 L java.awt.Component
     L java.awt.Container
         L java.awt.Window
             L java.awt.Frame
                 L javax.swing.JFrame

JFrameクラスはFrameクラスのサブクラスです。FrameクラスはSwingが広く使われる前に利用されていたAWTで使われていたフレームであり、JFrameクラスはFrameクラスの基本部分を継承しさらに機能を追加したクラスとなっています。

JFrameクラスのオブジェクトを作成

JFrameクラスをを利用するにはコンストラクタを使ってJFrameクラスのオブジェクトを作成します。どのようなコンストラクタが用意されているか確認してみます。

コンストラクタの概要
JFrame()
初期状態が不可視である、新しい Frame を構築します。
JFrame(GraphicsConfiguration gc)
Frame を、画面デバイスの指定された GraphicsConfiguration にタイトルなしで作成します。
JFrame(String title)
指定されたタイトルで、初期状態で不可視の新しい Frame を構築します。
JFrame(String title, GraphicsConfiguration gc)
JFrame を、指定されたタイトルで、画面デバイスの指定された GraphicsConfiguration に作成します。

主に使用するのは1番目及び3番目のコンストラクタです。次のように定義されています。

初期状態が不可視である、新しい Frame を構築します。

このコンストラクタはコンポーネントのローカルプロパティーを JComponent.getDefaultLocale によ
って返された値に設定します。  

例外: 
  HeadlessException - GraphicsEnvironment.isHeadless() が true を返す場合

非表示のフレームを作成します。

指定されたタイトルで、初期状態で不可視の新しい Frame を構築します。

このコンストラクタはコンポーネントのローカルプロパティーを JComponent.getDefaultLocale に
よって返された値に設定します。 

パラメータ:
  title - フレームのタイトル 
例外: 
  HeadlessException - GraphicsEnvironment.isHeadless() が true を返す場合

非表示のフレームを作成しますが、引数にフレームのタイトルに表示される文字列を指定します。

どちらのコンストラクタを使ってフレームを作成した場合でも、デフォルトでは非表示となっていますので明示的に表示にする必要があります。実際の使い方は次のようになります。

import javax.swing.JFrame;

class Sample{
  public static void main(String args[]){
    JFrame frame = new JFrame("タイトル");
  }
}

上記では"タイトル"という文字列を持つフレームを作成します。

フレームの表示

JFrameクラスからオブジェクトを作成した場合、デフォルトではフレームは非表示となっています。フレームを表示するにはJFrameクラスの親クラスであるWindowクラスで定義されているsetVisibleメソッドを使います。

パラメータ b の値に応じて、この Window を表示または非表示にします。 

パラメータ:
  b - true の場合は Window を表示し、そうでない場合は Window を非表示にする。Window および
    そのオーナーがまだ表示可能でない場合は、両方とも表示可能にします。Window は、可視状態に
    される前に検証される。Window がすでに可視状態である場合、Window は前面に移行します。
    false の場合、この Window、そのサブコンポーネント、およびその所有されたすべての子が非表
    示になる。#setVisible(true) を呼び出すと、Window とそのサブコンポーネントをふたたび可視
    状態にできます。

引数にtrueを指定すると対象のフレームが表示されます。

実際の使い方は次のようになります。

JFrame frame = new JFrame("タイトル");

frame.setVisible(true);

これでフレームが画面上に表示されます。

タイトルの設定

JFrameクラスの1番目のコンストラクタを使用した場合、タイトルは設定されません。JFrameクラスのオブジェクトが作成された後にタイトルを設定するにはJFrameクラスの親クラスであるFrameクラスで定義されているsetTitleメソッドを使います。

このフレームのタイトルを、指定された文字列に設定します。

パラメータ:
  title - フレームのボーダーに表示されるタイトル。null 値は空の文字列 "" として扱われる

引数にタイトルとして表示する文字列を指定して下さい。

実際の使い方は次のようになります。

JFrame frame = new JFrame();

frame.setTitle("タイトル");
frame.setVisible(true);

サンプル

では実際に試してみます。

SSample1_1.java

import javax.swing.JFrame;

class SSample1_1{
  public static void main(String args[]){
    JFrame frame = new JFrame("タイトル");
    frame.setVisible(true);
  }
}

プログラムを保存したら次のようにコンパイルを行います。

javac -encoding UTF-8 SSample1_1.java

今回プログラムの文字コードをUTF-8で作成しましたので、コンパイルオプションとして「-encoding UTF-8」を指定しています。Windows環境でShift_JISでプログラムを保存している場合は不要です。

では実行してみます。

p1-1

現時点ではフレームのサイズを指定していないためタイトルのみが表示されておりフレーム部分は見えていません。マウスで右隅の部分をドラッグして広げていただくとサイズが広がります。

p1-2

これが今回作成したフレームの部分になります。フレームに対してボタンやリストなど様々な部品を追加していくことができます。

なおプログラムを終了する場合は、プログラムを実行したコマンドプロンプト上で「Ctrl+c」で終了して下さい。現時点ではフレームの右上にある「×」ボタンを押してもフレームは閉じますがプログラム自身は終了しないためです。今後のページで「×」ボタンを押すとプログラム自身も終了させる方法を確認します。

( Written by Tatsuo Ikura )