Grocessingでフルスクリーン

このまえ「p5そのままで書いてなくて,フルスクリーンとかで出すときってどーしてるんですか?」と奇特なかたから質問をいただきましたので,実際にどーやってフルスクリーンで表示させるのかを書きたいとおもいます.

ただ今はこうやってるってだけで,ホントはもっといい方法があるかもしれません.おそらくGroovy詳しいかたならもっといい方法がおもいつくのではとおもうのですが…

まずこんなん準備しておきます.

Fullscreen.groovy

import java.awt.Toolkit
import java.awt.GraphicsDevice
import java.awt.GraphicsEnvironment

import processing.core.*
import javax.swing.JFrame

def static view(PApplet app){
  def frame = new JFrame()
  def tk = Toolkit.getDefaultToolkit()
  def ge = GraphicsEnvironment.getLocalGraphicsEnvironment()
  def gd = ge.getDefaultScreenDevice()
  def ss = tk.getScreenSize()
  def(w,h) = [ss.width, ss.height]
  
  frame.with{
	app.size(w as int,h as int)
  	setUndecorated(true)
  	add(app)
  	pack()
  	defaultCloseOperation = JFrame.EXIT_ON_CLOSE
  	setResizable(false)
  	setLocation(0,0)
  	setSize(w as int, h as int)
  }
  
  gd.setFullScreenWindow(frame)
  frame.setVisible(true)
  frame.createBufferStrategy(2)
}

でもってgroovycにてコンパイルしてから,こんなかんじでつかいます.

import processing.core.*
import static Fullscreen.*

class Myapp extends PApplet{
  //ごにょごにょごにょ
}

app = new Myapp()
app.init()
Fullscreen.view(app)

とどのつまりはフルスクリーン表示向けのクロージャをstaticにimportするわけです.Groovy1.6あたりからでしたっけ? この機能って.
なのでそれまではフルスクリーンでの表示はガチでコードを書いてて,「フルスクリーンで表示させるとこ分離したい」とおもってたわけで.