welcome: please sign in

2009-12-02 00:48:03時点のリビジョン28

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

ウインドウの内容

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

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

窓ガラスがはまる部分に処理内容に対応した部品を配置し、配置したインスタンスを通して処理を行います。 部品にはボタンやメニューなどもあります。


部品の配置

JFrame, Container, JPanelの3つのクラスを利用しています。

12~16行目はウインドウ枠の処理です。ウインドウの表示を参照。

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

この結果インスタンスの状態はこのようになります。


描画

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

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

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

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

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

描画はインスタンスgに対してメソッドを使って指示します。

drawRectは長方形を描くメソッドです。 引数は左上のx座標,y座標,横幅,縦幅です。

座標系は図のとおりです。


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

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

変数宣言は

のままでもかまいません。理由は継承のところで説明しました。

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

で実行できます。


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

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