swingをprocessingライクで使えるようにした

Post date: Feb 21, 2014 6:24:55 AM

processingをずっと使ってると,javaのswing(場合によってはawtすら)を使えなくなってしまう.(俺だけか?)

なのでずっとループする部分をスーパークラスとして作っておいて,サブクラスでpublic void setup()とpublic void draw() をオーバーライドして動作を決定できるようにしてみた.

ここにpsglike.jarを入れておく.多分,ラプラスかなにかで解凍すればソースは出てくるはず.

ソースを見ればわかるが,Timer使ってループでpaintさせてるだけ.使いやすいようにmouseX,mouseY,width,height,void println()も用意しておいてみた.

※mouseDragged,mouseMoved,componentResized,componentMovedをオーバーライドする場合はsuper(event);とか呼び出してあげないとmouseX,mouseY,width,heightが機能しなくなる.

ちなみにサブクラスの記述は以下のような感じになる.

package psgLike;//ココは人によりけり

import java.awt.Color;

import java.awt.Graphics;

public class TestMain extends PsgLike{

public static void main(String args[]) {

init(new TestMain(),320,240);//後ろ2つの引数はウインドウサイズ

}

public void setup(Graphics g){}//なくてもいい

public void draw(Graphics g){

g.setColor(new Color(0,0,255));

g.fillOval(mouseX-25, mouseY-25, 50, 50);

}

}

問題点:

全部publicで宣言する必要性

さっきの「オーバーライドする場合はsuper(event);」がめんどい

まだイメージのロードとかしてないので有用性については疑問符が付く.(各種loadImage的なのについては実装する必要ありそう?)