Processingでタイトルバーのないウィンドウを作り、それをマウスドラッグで移動できるようにする
タイトルバーがないプログラムをときどき作りたくなることがありますが、タイトルバーがないとウィンドウが移動できなくなってしまいます。そこで、ウィンドウ内をドラッグしたときに移動できるようにしましょう、というのが以下のコードです。
import java.awt.*; int mx = 0; int my = 0; void setup() { size(800,600); } void init() { frame.removeNotify(); frame.setUndecorated(true); frame.addNotify(); super.init(); } void draw() { } void mousePressed() { mx = mouseX; my = mouseY; } void mouseDragged() { Point mouse; mouse = MouseInfo.getPointerInfo().getLocation(); frame.setLocation( mouse.x - mx, mouse.y - my ); }
最初はMouseInfoを使わずに、ローカルのマウス移動量(mouseX、mouseY、pmouseX、pmouseY)だけでできるかな?と思ったんですが、frame.setLocation()でウィンドウを移動させてる最中にその値を参照すると、値がバタついてしまうっぽい(?)。できる人いたら教えてください。