/** 自作キャンバス */ public class MyCanvas extends JPanel { /** オフスクリーンバッファに描画するためのオブジェクト */ private Graphics backGraphics; /** キャンバスを作成する */ public MyCanvas() { super(false); // JPanel提供のダブルバッファリングは使わない } /** オフスクリーンバッファに描画するためのオブジェクトを返す */ public Graphics getBackGraphics() { return backGraphics; } //...以下略 // backGraphicsを初期化する処理が必要 }後は、Rhinoのスクリプトでオフスクリーンバッファへ描画してから repaint() で自作キャンバスを再描画する。
上のソースはbackGraphicsを初期化する処理が抜けていて、今回は古いやり方に従って描画メソッド(JPanelなのでpaintComponentメソッド)が初めて呼び出された時だけcreateImage()でオフスクリーンバッファ(と、そのGraphicsオブジェクト)を作成するようにした。
Javaは「Compatibleな」オフスクリーンバッファを作るメソッド、というのが幾つもあるのだけれど、いまいち最適な使い方が分からない。