/** 自作キャンバス */
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な」オフスクリーンバッファを作るメソッド、というのが幾つもあるのだけれど、いまいち最適な使い方が分からない。