その間、BSD ライセンスの SwingLabs サブプロジェクトである JXLayerを見つけました。プロジェクト ライブラリに含め jxlayer-3.0.4.jar
た後、再描画をアニメーション化することができました。JFrame と JPanel がある場合は、次を使用します。
JFrame frame = ...;
JPanel panel = ...;
if (DEBUG_REPAINT) {
JXLayer<JPanel> layer = new JXLayer<>(panel);
DebugRepaintingUI dp = new DebugRepaintingUI(50); // 50ms delay
layer.setUI(dp);
frame.setContentPane(layer);
}
else {
frame.setContentPane(panel);
} }
デフォルトではDebugRepaintingUI
、XORMode で変更された領域が描画されますが、ソースを調整して目立たない効果を作成できます。
このアプローチには、実際にアプリケーションを変更するという問題があります。多分誰かがより良い考えを持っています。