welcome: please sign in

2009-11-27 07:35:45時点のリビジョン18

メッセージを消す
location: ウインドウの内容

ウインドウの内容

窓は窓枠と窓ガラスでできています。

窓枠に対応するのがJFrameです。

窓ガラスがはまる部分に処理内容に対応した部品を配置し、処理を記述します。

枠の内側で部品を配置できる場所をContentPaneと呼び、クラスはContainerです。

ここにaddメソッドを用いて部品を配置します。

このプログラムでは基本的な部品であるJPanelを配置しています。

Containerがjava.awtパッケージのクラスなのでimport文が増えています。


描画

GUIではプログラムの実行開始時にだけ、ウインドウ内部が描画されるわけではありません。

ウインドウの大きさが変えられたり、ボタンが押されたり、文字が入力されたり など、いろいろな場面で描画が行われます。

JPanel上の描画が必要になったときには、JPanelクラスの paintComponentメソッドが実行されます。

JPanelクラスのpaintComponentメソッドではプログラムで表示内容を指定できません。

JPanelクラスを継承してサブクラスを作成し、paintComponentメソッドを記述します。

サブクラス名を Lesson10 とした例を示します。

paintComponentは引数としてGraphicsクラスのインスタンスをとります。 この例では変数名をgとしています。

描画をはこのインスタンスgに対してメソッドを使って行います。

drawRectは長方形を描くメソッドです。


上のサンプルプログラムSample3でJPanelとなっていた箇所を、 このクラス(Lesson10)で置き換えます。

するとContainerに配置されるのはLesson10クラスのインスタンスとなり、 描画が必要なときにはLesson10クラスのpaintComponentが実行されます。

Sample3.javaとLesson10.javaを作成、コンパイルし

で実行できます。


ウインドウを作成し表示するためのmainメソッドを、 Lesson10クラス内に記述すれば Lesson10.javaだけを作成、コンパイルし

で実行できます。(プログラムは1つのファイルで済みます)