目次> 第3章> 3.1 TOPUPPREVNEXT

3.1 複数ラベルの貼付け

1.2節で作成したプログラム MyName.java を手直しして、 自分の名前の他に、住所や、所属を表示するプログラムを作りましょう。

プログラム MyAddress.java を 適当なフォールダにダウンロードしてください。

下図の中の赤字の部分が、今回の修正個所です。

Javaのプログラム は クラス宣言 の 集まりです。 このプログラム MyAddress.java には、 クラスが1つ宣言されています。 6行目の class の次の MyAddress が クラスの名前です。 この行の最後の中カッコは、26行目で閉じられています。 つまり、6行目から26行目までが、 クラス MyAddress の宣言です。

クラス宣言 は、 コンピュータで処理をしようとしている「モノ」の設計図です。 どんなデータがつまっているのか、最初はどんな状態なのか、どんな処理をするのか、 といったことを記述します。
このプログラムでは、 「 名前や住所、所属が表示されているウィンドウ 」 という クラス MyAddress を宣言しています。 プログラム MyAddress.java

このプログラムのクラス宣言は、2つの部分からなっています。 コンストラクタメソッド main です。

メソッド main には、 このプログラム MyAddress.java を実行したときに 何をするのか、ということを記述します(23〜25行目)。

中身は1行で、MyAddressというクラスのインスタンスを生成せよ、 と記述しています。MyAddress というのはクラス名ですが、 new MyAddress() と書かれると、 8行目以降に書かれているコンストラクタが参照されます。

コンストラクタの名前はクラス名と同じ MyAddress です(8行目)。 MyAddress のインスタンスを生成しなさい、 といわれたら何をするかということが記述されています。

簡単にいうと、つぎの10ステップの命令が書かれています。
  1. 文字列 "私の住所" を使って、 JFrame を生成し、MyAddress の土台としなさい。
    7行目に extends JFrame と書かれているために、 super( ... ) によって JFrame が生成されます。
  2. ウィンドウの右上の「 × 」ボタンを押されたら、ウィンドウを閉じると同時に プログラムの実行を終了するように登録をしておきなさい。
  3. ウィンドウの表示面をとりだし、 pane をいう名前をつけなさい。
  4. pane のレイアウト を FlowLayout に しなさい。
    もう少し正確にいうと、
    中央揃えで、縦横とも10ドットあけて並べるような FlowLayout を 生成し、 これを使って pane の setLayout という仕事をしなさい。
    「 pane の メソッド setLayout を呼び出す 」 あるいは、
    「 pane の メソッド setLayout を参照する 」 といいます。
  5. "藤村..." と書かれた JLabel を生成し、 pane に貼り付けなさい。
    もう少し正確にいうと、
    文字列 "藤村..." を使って JLabel を生成し、 できた JLabel を使って pane の add という仕事をしなさい。
  6. "相模原..." と書かれた JLabel を生成し、 pane に貼り付けなさい。
  7. "4丁目..." と書かれた JLabel を生成し、 pane に貼り付けなさい。
  8. "情報処理教育室" と書かれた JLabel を生成し、 pane に貼り付けなさい。
  9. 今作成中のMyAddressのインスタンスの大きさを広げ、 貼り付けられたラベルが表示されるようにしなさい。
  10. このインスタンスを表示しなさい。
通常、メソッドの呼び出しは次の形をしています。
xxxx.yyyy(...)
yyyy は、メソッドの名前です。 xxxx には、 どこで定められた yyyy であるかを指定します。 ここでは4箇所でインスタンス名 pane を指定しています。
カッコ内の ... を使って、 pane に定められたメソッド yyyy を実行しなさい、という命令です。

コンストラクタ内では、 このxxxx.を省略した形式が許されていて、 this. が補われて解釈されます。

setDefaultCloseOperation(...) (10 行目)
getContenPane() (11 行目)
pack() (19 行目)
setVisible(...) (20 行目)
がその例です。 コンストラクタ内の this は、 現在作成中のインスタンスを指しています。

プログラムについての説明を1行目にいれました。 連続した斜線「 // 」 を書くとその行の終わりまで、 漢字も含めて 好きな文字を書くことができます。 コメント comment とよばれる プログラムの説明を記述するための機能です。

17〜20行目で複数のラベルを pane に貼り付けています。
引用符「 " 」の間には、 引用符や改行といった特別の文字を除く、任意の文字を並べることができます。 自分の名前や好きな文字列に書き直してみましょう。

コンパイルし、実行してみましょう。(下図(1)、(2))

コンパイルと実行

実行すると、画面の左上に(3)のようなウィンドウが表示されます。

ここで、ウィンドウのサイズを変更してみましょう。すこしづつ、縦長の ウィンドウにしてみると、ウィンドウ内の文字列の配置が変わります。

ウィンドウの変形アニメ

ウィンドウ内の配置のことを レイアウト layout といいます。 左から右へ、上から下へ配置し、外側のウィンドウの形に応じて 適当に再配置したい場合、 FlowLayout を用います。 書き方は次のとおりです。

FlowLayout( 揃え方 , 横方向の隙間 , 縦方向の隙間 )
揃え方は、左詰、中央揃え、右詰 の3種類で、それぞれ
FlowLayout.LEFT   FlowLayout.CENTER   FlowLayout.RIGHT
と指定します。

間隔は、ドット数を指定します。

揃え方だけを指定することができます。この場合、間隔は縦横とも 5 とみなされます。 このように、省略した場合に採用される値のことを、デフォルト値 といいます。

揃え方のデフォルト値は FlowLayout.CENTER です。つまり、 次の3つの指定は同等です。

FlowLayout()
FlowLayout(FlowLayout.CENTER);
FlowLayout(FlowLayout.CENTER, 5, 5)

更新日:2006/04/06 TOPUPPREVNEXT

Valid HTML 4.01 Transitional