Java決まり文句(雛形)を流用すると簡単

   2012/05/08

まいど、イガジーです。
プログラミングに限りませんが、習うより慣れろという言葉があります。

未知のものを理解し習得するには、理屈よりも慣れた方が早いのです。
分からないながらも使っているうちに慣れてきて、
ある日、ああ、そういう事だったのかと腑に落ちるのです。

JavaでGUIプログラミングをマスターする場合も、決まりきったパターンを
真似て、繰り返し使うのが早道です。
例えば、Frame(画面に描画する窓(window)枠みたいなもの)を使う場合は

import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MyClass extends Frame {
	private static final long serialVersionUID = 1L;
	public MyClass() {
		this.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent ev) {
				System.exit(0);
			}
		});
		this.setTitle("Skeleton");
		this.setSize(200,200);
		// ここから本来のコード
		this.setVisible(true);
	}
	public static void main(String[] args) {
		new MyClass();
	}
}

と、まず書いて(コピペしてきて)MyClassの部分を
好きなクラス名(プログラム名)に変更します。

上記だけでも、実行するとのっぺりの窓(Frame)が出て
窓を閉じるボタン[X]で終了します。

グラフィックを使う場合は、

	public class MyCanvas extends Canvas{
		private static final long serialVersionUID = 1L;
		public BufferedImage b;
		public Graphics g=null;

		public MyCanvas(int ww,int hh) {
			b=new BufferedImage(ww,hh,BufferedImage.TYPE_INT_RGB);
			g=b.getGraphics();
		}
		public void paint(Graphics g0) {
			g0.drawImage(b,0,0,null);
		}
	}

というクラスをコピペすると便利だと思います。
意味がよく分からなくとも、このMyCanvasは

MyCanvas mc=new MyCanvas(200,200);
this.add(mc,BorderLayout.CENTER);
mc.g.setColor(Color.YELLOW);
mc.g.fillRect(20, 20, 100, 80);

とすると、黄色で四角が描けます。

先のFrameの雛形と合体させると、次のようなプログラムが出来上がります。

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;

public class MyClass extends Frame {
	private static final long serialVersionUID = 1L;
	public MyClass() {
		this.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent ev) {
				System.exit(0);
			}
		});
		this.setTitle("Skeleton");
		this.setSize(200,200);

		MyCanvas mc=new MyCanvas(200,200);
		this.add(mc,BorderLayout.CENTER);
		mc.g.setColor(Color.YELLOW);
		mc.g.fillRect(20, 20, 100, 80);
		mc.g.setColor(Color.GREEN);
		mc.g.fillOval(20, 20, 100, 80);
		mc.repaint();

		this.setVisible(true);
	}
	public static void main(String[] args) {
		new MyClass();
	}

	public class MyCanvas extends Canvas{
		private static final long serialVersionUID = 1L;
		public BufferedImage b;
		public Graphics g=null;

		public MyCanvas(int ww,int hh) {
			b=new BufferedImage(ww,hh,BufferedImage.TYPE_INT_RGB);
			g=b.getGraphics();
		}
		public void paint(Graphics g0) {
			g0.drawImage(b,0,0,null);
		}
	}
}

グラフィック命令には、drawLine()などもありますから
色々変更・改造してみると「慣れ」てくるでしょう。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)