グラフィックス コンテキストを適切に破棄する方法 - と を使用する必要がtry
ありfinally
ますか? 簡単な例:
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
try {
g2D.drawLine(0, 0, 10, 0);
} finally {
g2d.dispose();
}
}
編集
これは、java.awt.Window クラスの例です。
/**
* {@inheritDoc}
*
* @since 1.7
*/
@Override
public void paint(Graphics g) {
if (!isOpaque()) {
Graphics gg = g.create();
try {
if (gg instanceof Graphics2D) {
gg.setColor(getBackground());
((Graphics2D)gg).setComposite(AlphaComposite.getInstance(AlphaComposite.SRC));
gg.fillRect(0, 0, getWidth(), getHeight());
}
} finally {
gg.dispose();
}
}
super.paint(g);
}
ご覧のとおり、使用されるコンストラクターは非常に単純ですがtry
、finally
それでも終了します。したがって、それらを使用することは良い習慣になると思います。