●前回作ったパネル部分を内部クラスにした、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に配置してみなさい。