GUI②レイアウトを決めてパーツをのっけていく | のんびりした人の日記

のんびりした人の日記

仕事の愚痴とアニメ関連のことを書いていきます。

フレームを作ったまではいいですが、それだけではなにもできません。

なのでフレームにいろいろパーツを乗っけていってなにかしらの動作ができるようになるようにさせます。


パーツのことはコンポーネントというのですが、そのコンポーネントにはラベルやボタン、テキストボックスなどいろいろなものがあります。

そのコンポーネントをどのようにオブジェクトに追加していくのかを見ていきます。


まずJFrameクラスからフレームを作成しましたが、これはたくさんの機能をもったペイン(窓枠、窓ガラスという意味)という層が重なっている構造となっています。


のんびりした人の日記-ペイン



そこでそれぞれの別々の使用目的の層にボタンなどのコンポーネントを追加していきます。

コンポーネントを追加していくには、まずContentPaneを取得していく必要があります。


取得の方法は、以下の命令文を記述します。

Container cont=frame.getContentPane();

しかし、getContentPaneメソッドはContainerクラス(java.awt.Container)なので、あらかじめインポートをしておく必要があります。

インポートの際は

import java.awt.*;

としておくと楽です。


つぎは、コンポーネントの生成を行います。

これは書くのは非常に面倒なので省略しますが、一つだけボタンについてやっておきます。

ボタンを生成するには以下の命令文を記述します。

JButton btn=new JButton("ボタンの名前");

()内に記述した文字列がボタンに記述されることになります。


コンポーネントを生成した後には、それをペインにどのような配置で乗っけるかを決めます。レイアウトを決めることです。

レイアウトについてもたくさんあります。

・BorderLayout

・FlowLayout

・CardLayout

・GridLayout

・BoxLayout

・GridBagLayout

・SprintLayout

これらについてはAPIを参照しましょう。

以下ではBorderLayoutをつかってみます。


レイアウトを決めていくときには、レイアウトマネージャというものを生成します。

今回はBorderLayoutを使うと決めたので、

BorderLayout bl=new BorderLayout();

というようにして設定します。


そして、コンポーネントを乗っけていきます。乗っけていくのにはContainerクラスのaddメソッドを使って以下のように記述します。

cont.add(btn,bl.WEST);


BorderLayoutでコンポーネントを配置していくときには、コンポーネントは最大5つまでおくことができます。コンポーネントの配置場所のきめかたは上記の命令のかっこのなかで

(追加するコンポーネント,bl.配置場所)

というように記述します。

配置場所はNORTH、EAST、SOUTH、WEST、CENTERの五つから選べます。



のんびりした人の日記-borderlayout


BorderLayout以外のレイアウトマネージャもそれぞれ実験してみようと思います。ソースと実行結果の画像もちゃんとアップしていこうかな。


画像について(上から)

1枚目:sun社サイトのhow to use panesから引用

2枚目:サンマイクロシステム社のjava Platform Standard Edition 6.0のAPI仕様書より引用