パネル部分独立

パネル部分を内部クラスにする

前回つくったパネルにいろいろなものを配置していきます。今後この部分に変更が加えられ、他の部分はあまり変わりませんので、パネルの部分をまとめておきます。

いろいろなやり方がありますが、ここでは内部クラスとして独立させます。赤い部分と青い部分が書き加えられた所です。緑の部分にも注意してください。同じになるように書き換えなければなりません。

次のプログラムは前回のものと実行結果は同じです。

ファイル名 PanelTest2.java

/**
 *  パネルを用意して色を付ける (パネルを内部クラスに)
 */
import javax.swing.*;
import java.awt.*;        // for Color Container

public class PanelTest2 extends JFrame{
	/* コンストラクタ */
	public PanelTest2(){
		/* サイズと位置を指定 */
		setSize(400, 300);
		/* 終了処理を追加 */
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		/* パネルをつくる */
		MyJPanel panel01 = new MyJPanel();
		/* パネルに色を指定 この部分はMyJPanelに移動*/
		//panel01.setBackground(Color.blue);
		
		/* コンテナ取得 */
		Container cn = getContentPane();
		/* パネルをコンテナに貼る*/
		cn.add(panel01);

		/* 実際に表示する */
		setVisible(true);
	}
	/********* main **********/
	public static void main(String[] args){
		/* フレームを作成 */
		PanelTest2 frame1 = new PanelTest2();
	}
	/* パネルを作るクラス */
	public class MyJPanel extends JPanel{
		/* コンストラクタ */
		public MyJPanel(){
			/* パネルに色を指定 */
			setBackground(Color.blue);
		}
	}
}

課題

上記プログラムをつくりなさい。

補充課題

上記のプログラムの class MyJPanel に次のように書き加えるとパネル上に文字を書くことができる。いろいろ試してどういう仕組みか探りなさい。コピーして書き加える場合、PanelTest2 から PanelTest3 への書き換えは4カ所必要です。

ファイル名 PanelTest3.java

	public class MyJPanel extends JPanel{
		/* コンストラクタ */
		public MyJPanel(){
			/* パネルに色を指定 */
			setBackground(Color.blue);
		}
		public void paintComponent(Graphics g){
			super.paintComponent(g);
			g.drawString("x=20 y=40 に文字を書く",20,40);
			Font font1 = new Font("Serif", Font.PLAIN, 24);
			g.setFont(font1);
			g.setColor(Color.yellow);
			g.drawString("フォントを指定して文字を書く",20,80);
		}
	}

paintComponent は描画が必要なときに自動的に呼び出されるメソッドである。これは余り気にしないこと

"Serif" には Monospaced SansSerif Symbol Dialog Default などが使えます。

PLAIN の他に、ITALIC や BOLD が使えます。両方指定するには、Font.BOLD|Font.ITALIC とします。

もくじ

聖愛高等学校
http://www.seiai.ed.jp/
Last Modified