Java決まり文句(雛形)を流用すると簡単
まいど、イガジーです。
プログラミングに限りませんが、習うより慣れろという言葉があります。
未知のものを理解し習得するには、理屈よりも慣れた方が早いのです。
分からないながらも使っているうちに慣れてきて、
ある日、ああ、そういう事だったのかと腑に落ちるのです。
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()などもありますから
色々変更・改造してみると「慣れ」てくるでしょう。
この記事へのコメントはこちら