Imaginary Code

from kougaku-navi.net

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()でウィンドウを移動させてる最中にその値を参照すると、値がバタついてしまうっぽい(?)。できる人いたら教えてください。