import java.awt.*; import java.awt.event.*; public class BarMeter4 extends BarMeter3 { // リサイズされたかどうかを表すフラグ protected boolean resizeFlag = false; public BarMeter4(){ super(); // ComponentEvent を処理するように設定 enableEvents(AWTEvent.COMPONENT_EVENT_MASK); } // ComponentEvent を処理する public void processComponentEvent(ComponentEvent e){ if(e.getID() == ComponentEvent.COMPONENT_RESIZED){ // リサイズされたらフラグを立てておく resizeFlag = true; repaint(); } // 親クラスのメソッドを呼び出す (必須) super.processComponentEvent(e); } public void paint(Graphics g){ // ダブルバッファリング用のイメージがなければ、 // 生成し、グラフィックコンテキストをえる。 // また、リサイズされたときもバッファイメージを生成する if(image == null || resizeFlag){ createBufferImage(); resizeFlag = false; } // 背景色で塗りつぶす graphics.setColor(this.getBackground()); graphics.fillRect(0, 0, width, height); // バーの描画 drawBar(graphics, value); // イメージバッファの描画 g.drawImage(image, 0, 0, width, height, this); } }