●前回作ったパネル部分を内部クラスにした、PanelTest2.java を元に、MyJPanel 部分を変更してボタンとラベルを置きます。
●ラベルは文字を表示するだけですが、書く位置を数値で示す必要がないので楽です。ボタンは押すことができますが、まだなにも働きません。今後拡張していきます。

/**
* パネルにボタンを配置
*/
import javax.swing.*;
import java.awt.*;
public class ButtonTest extends JFrame{
/* コンストラクタ */
public ButtonTest(){
setSize(400, 300); //サイズと位置を指定
setDefaultCloseOperation(EXIT_ON_CLOSE); //終了処理を追加
MyJPanel panel01 = new MyJPanel(); //パネルをつくる
Container cn = getContentPane(); //コンテナ取得
cn.add(panel01); //パネルをコンテナに貼る
setVisible(true); //実際に表示する
}
/********* main **********/
public static void main(String[] args){
/* フレームを作成(事実上のプログラム実行) */
ButtonTest frame1 = new ButtonTest();
}
/* パネルを作るクラス */
public class MyJPanel extends JPanel{
/* コンストラクタ */
public MyJPanel(){
setBackground(new Color(240,255,255)); //パネルに色を指定
JButton button = new JButton("Click Me!"); //ボタンを作る
JLabel label = new JLabel("clicks",JLabel.CENTER); //ラベルを作る
setLayout(new BorderLayout()); //レイアウトマネージャを指定
add(label, BorderLayout.CENTER); //ラベルを真ん中に
add(button, BorderLayout.SOUTH); //ボタンを下に配置
}
}
}
●パネルの色を設定しています。数値は(赤の強さ, 緑の強さ, 青の強さ, )です。ラベルは透けてこの色が見えますが、ボタンはシステムの色になります。もちろん指定すればこれも換えられます。
setBackground(new Color(240,255,255));
●ボタンを作ります。JButtonのクラスを使ってボタンオブジェクトを生成しています。( )の中に String を指定するとこれがボタンの中央に表示されます。
JButton button = new JButton("Click Me!");
●ラベルを作ります。JLabelのクラスを使ってラベルオブジェクトを生成しています。( )の中に String を指定するとこれがラベルに左寄せで表示されます。JLabel.CENTER を加えてこれを中央に表示されるようにしました。
JLabel label = new JLabel("clicks",JLabel.CENTER);
●BorderLayoutはレイアウトマネージャです。私たちに代わって適当に配置をしてくれます。もちろん細かく指定することもできるのですが、いまは自動にしておきます。レイアウトマネージャにはいろいろ種類があって、BorderLayoutはそのひとつです。
setLayout(new BorderLayout());
BorderLayoutは次のように配置します。ただし、この5つのうち無いものは自動的に領域をつぶして、あるものをいっぱいまで広げます。
| NORTH | ||
|---|---|---|
| WEST | CENTER | EAST |
| SOUTH | ||
●MyJPanelにラベルを貼ります。BorderLayout.CENTER はレイアウトマネージャへの指示です。
add(label, BorderLayout.CENTER);
●MyJPanelにボタンを貼ります。BorderLayout.SOUTH はレイアウトマネージャへの指示です。
add(button, BorderLayout.SOUTH);
●上記プログラムをつくりなさい。
●ボタンの数やラベルの数を増やして、WESTやNORTHに配置してみなさい。