学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Java | 21 | Frame

↓↓クリックして頂けると励みになります。




20 | StringBuffer】 << 【ホーム】 >> 【22 | コンストラクタ


Frameを用いたプログラム
Frameを用いたプログラム



JavaのFrameは、AWT(Abstract Window Toolkit)またはSwingといったJavaのグラフィカルユーザーインターフェース(GUI)フレームワークにおけるウィンドウの基本的なコンポーネントです。
Frameは、ユーザーがGUIアプリケーション内で操作できるウィンドウを表します。

Frameは通常、以下のような機能を提供します。

  • ウィンドウのタイトルバー(タイトルを表示し、ウィンドウを移動、最小化、最大化、閉じるボタンを含む)。
  • ウィンドウのサイズ変更可能領域(クライアント領域)。
  • メニューバー、ツールバー、ステータスバーなど、追加のGUIコンポーネントの配置。
  • FrameはSwingフレームワークではJFrameクラスのインスタンスとして表され、AWTフレームワークではFrameクラスのインスタンスとして表されます。SwingのJFrameはAWTのFrameを拡張しており、より高度な機能と柔軟性を提供します。




Visual Studio Codeで以下のJavaプログラムを作成します。


新規作成 【FrameTest.java】

import java.awt.Frame;

public class FrameTest {

	public static void main( String argv[] ) {

		Frame frame = new Frame( "Frame Test" );
		frame.setSize( 600, 400 );
		frame.setVisible(true);
	}
}



最初の一行目を見てください。
import java.awt.Frame;


これは、import文を使って最初にjavaのパッケージの中にあるクラスの機能を使うために指定しています。


ではパッケージについて詳しく説明します。


Javaのクラスライブラリでは様々なクラスを提供しています。
これらのクラスの持つメソッドや変数を活用することで、効率的にプログラムを作成できます。


Javaのクラスライブラリはパッケージという単位でグループ化されています。


下の表がJavaの主なパッケージです。

パッケージの名称パッケージに含まれているクラス
java.langあらゆるプログラムで使われるような基本的な機能を提供するクラス
java.appletJavaアプレットを作成するためのクラス
java.ioキー入力と画面出力、およびファイル入出力の機能を提供するクラス
java.util日付処理、高度なデータ構造、およびデータの検索などを提供するクラス
java.netネットワーク機能を提供するクラス
java.awtウインドウ形式のユーザーインターフェイスを実現するためのクラス
java.awt.eventウインドウ形式のユーザーインターフェイスでイベントを処理するためのクラス


java.awt.eventjava.awtの中に格納されているパッケージです(サブパッケージ)。
Javaのクラスライブラリが提供するすべてのパッケージとクラスの情報(Application Programming Interface(API)といいます。)が、ORACLEのホームページ(Java® Platform, Standard Edition & Java Development Kit
バージョン21 API仕様
)にあります。


パッケージやクラスの種類をすべて暗記する必要はありません。
必要に応じて使っていけば、自然と覚えられるものです。


import java.awt.Framejava.awtパッケージのFrameクラスを使うという意味があります。

Frame frame = new Frame( "Frame Test" );

これは、コンストラクタ(Frame)のインスタンス(frame)を生成しています。
( "Frame Test" )はこのフレームの名前です。
表示されるフレームの上のバーに表示されます。

frame.setSize( 600, 400 );

これはFrameクラスのsetSizeメソッドを使用しています。
使い方は以下の通りです。

インスタンス名.setSize(横の大きさ, 縦の大きさ);

このコンストラクタ(メソッド)により、フレームの初期値(大きさ)を決めることができます。

frame.setVisible(true);

このコンストラクタは、フレームを表示させるメソッドです。
このメソッドがないとフレームを表示させることができません。


このプログラムはFrameTestと言う名前のフレームが表示されます。
Java1.4までは「frame.show();」という書き方でフレームが表示されたのですが、Java1.5以降は推奨されていません。


プログラムをコンパイルして出力結果を確認します。
×ボタンを押しても消すことはできないので、コマンドプロンプト上でCtr+Cで強制終了して消さなくてはなりません。

~/Desktop/Programming/JP $ javac FrameTest.java 
~/Desktop/Programming/JP $ java FrameTest     


表示されるフレーム
表示されるフレーム




Visual Studio Codeで以下のJavaプログラムを作成します。


新規作成 【ColorFrame.java】

import java.awt.*;

public class ColorFrame { 

	public Frame frame;

	public ColorFrame() {
		frame = new Frame( "Color Frame" );
		frame.setSize( 400, 300 );
		frame.setVisible(true);
	}

	public ColorFrame( Color color ) {
		this();
		frame.setBackground( color );
	}

	public static void main( String argv[] ) {

		ColorFrame def = new ColorFrame();
		ColorFrame red = new ColorFrame( new Color( 255,0,0 ) );
		ColorFrame green = new ColorFrame( new Color( 0,255,0 ) );
	}
}


import java.awt.*;

この最後の*はワイルドカードといい、すべてという意味があります。
java.awtパッケージにあるクラス全部を使いますと宣言することになります。


ちなみに、今回は以下のクラスを使っています。

java.awt.Frame;
java.awt.Color;



これらを、

import java.awt.Frame;
import java.awt.Color;

としても問題ありません。

public Frame frame;

これは、インスタンスを生成していません。
インスタンスを宣言しているだけです。
インスタンスは、メソッド内で作成しています。


次の記述を見てください

public ColorFrame() {
	frame = new Frame( "Color Frame" );
	frame.setSize( 400, 300 );
	frame.setVisible(true);
}

これは、自分でコンストラクタを作成しています。
まず、クラス名と同じコンストラクタ名にします。
次に初期条件を内部に記述します。
今回は、インスタンスの生成、大きさの設定、フレームの表示です。
frame = new Frame( "Color Frame" )
メソッドの外でインスタンスを宣言していますので、最初のコンストラクタ名を省略できます。


次の記述を見てください。

public ColorFrame( Color color ) {
    this();
    frame.setBackground( color );
}

これも自分で作ったコンストラクタです。
このthis()というのは、同じコンストラクタ名の内容をそのまま使うといった意味を持っています。
ですのでこのように書き換えることができます。

public ColorFrame( Color color ) {
    frame = new Frame( "Color Frame" );
    frame.setSize( 400, 300 );
    frame.setBackground( color );
    frame.setVisible(true);
}


frame.setBackground( color );

このメソッドもJavaパッケージのColorクラスのメソッドで、フレームの背景色を決めることができます。
指定しなければ白色になります。
これをデフォルトといいます。
引数にはColorクラスでインスタンスを生成したものを用います。

ColorFrame def = new ColorFrame();
ColorFrame red = new ColorFrame( new Color( 255,0,0 ) );
ColorFrame green = new ColorFrame( new Color( 0,255,0 ) );

これはmainメソッドの記述ですが、それぞれ自分で作成したコンストラクタのColorFrameでインスタンスを作成しています。
インスタンスを作成するとそのコンストラクタが呼び出され、実行されます。

ColorFrame def = new ColorFrame();

これには引数のcolorが入っていませんので、色はデフォルトの白となります。

ColorFrame red = new ColorFrame( new Color( 255,0,0 ) );

この引数のcolorはRGBで表されます。
これは、色の三原色(RED,GREEN,BLUE)で表します。
表す方法は0から255の数字で割合を決めていきます。
青だと(0, 0, 255)になります。


引数をnew Color( 255,0,0 )の様にして使っていますが、これはこの場所だけ使って消える記述方法です。
色の記憶を残しておきたいときは、
Color color = new Color(255, 0, 0);
として、
ColorFrame red = new ColorFrame( color );
とします。


メモリを使う必要がないと思ったら、このようにしてnew演算子を使うことで簡単に書くこともできますので覚えておいてください。


出力結果では3つの色違いのフレームが出てきます。
白、赤、緑のフレームが順番に重なっています。
ドラッグして移動すると隠れているフレームが出てきます。
これも×ボタンを押しても消すことはできないので、コマンドプロンプト上でCtr+Cで強制終了して消さなくてはなりません。

~/Desktop/Programming/JP $ javac ColorFrame.java 
~/Desktop/Programming/JP $ java ColorFrame    


表示されるフレーム
表示されるフレーム




Visual Studio Codeで以下のJavaプログラムを作成します。


新規作成 【ColorFrameTest.java】

import java.awt.*;

public class ColorFrameTest {

	public static void main( String argv[] ) {

		ColorFrame def = new ColorFrame();
		ColorFrame red = new ColorFrame( new Color( 255, 0, 0 ) );
	}
}



この「ColorFrameTest.java」は、先ほど作成した「ColorFrame.java」がないと動きません。
このように別のクラスのコンストラクタも使うことができます。
他のクラスのコンストラクタを使用する場合でも、使用パッケージの宣言(import java.awt.*;)は省略できませんので気をつけてください。


出力結果は2つの色違いのフレームが出てきます。
白、赤のフレームが順番に重なっています。
ラッグして移動すると隠れているフレームが出てきます。
これも×ボタンを押しても消すことはできないので、コマンドプロンプト上でCtr+Cで強制終了して消さなくてはなりません。

~/Desktop/Programming/JP $ javac ColorFrameTest.java
~/Desktop/Programming/JP $ java ColorFrameTest    


表示されるフレーム
表示されるフレーム





Visual Studio Codeで以下のJavaプログラムを作成します。


新規作成 【ColorFrameTest2.java】

import java.awt.*;

public class ColorFrameTest2 {

	public static void main( String argv[] ) {

		ColorFrame frames[][] = new ColorFrame[3][2];

		for( int i=0; i<frames.length; i++ ) {
			for( int j=0; j<frames[0].length; j++ ) {
				frames[i][j] 
				= new ColorFrame( new Color( 0,j*32,i*32 ) );
			}
		}
	}
}



コンストラクタを使ったインスタンスの生成に、配列を使用することができます。

ColorFrame frames[][] = new ColorFrame[3][2];

この記述によりインスタンスの配列を格納する箱frames[][]が作られます。

frames[i][j] = new ColorFrame( new Color( 0,j*32,i*32 ) );

これによりframes[][]の箱に作成されたインスタンスがfor文のループによって埋められていきます。
インスタンスが作成された時に実行され、いろいろな色のフレームが表示されます。


実行結果ではいろいろな色のフレームが6種類出てきます。
ドラッグして移動すると隠れているフレームが出てきます。
これも×ボタンを押しても消すことはできないので、コマンドプロンプト上でCtr+Cで強制終了して消さなくてはなりません。

~/Desktop/Programming/JP $ javac ColorFrameTest2.java
~/Desktop/Programming/JP $ java ColorFrameTest2     


表示されるフレーム
表示されるフレーム



20 | StringBuffer】 << 【ホーム】 >> 【22 | コンストラクタ





↓↓クリックして頂けると励みになります。