2011-08-05 9 views
1

を消去されません。私は再描画とmodel.getCount(l)を呼び出すときに、このグラフィック#のDrawText、古いテキストは

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g);  
    //[...] 
    g.drawString(" x " + model.getCount(l), getTilesWidth() + ship.getWidth() + PREVIEW_OFFSET_X + 5, y - 10); 
    //[...] 
} 

ようpaintComponentをオーバーライドしますが、JPanelのは、単に描かれた新しい文字列を取得、変更されている必要があり古い文字列の上に。しかし、私がウィンドウのサイズを変更すると、もう一度うまくいく。これの原因は何でしょうか?

+1

-1、合理的な推測をするのに十分な情報ではありません。あなたが掲示した2行のコードに基づいて、あなたのパネルは適切に再描画する必要があります。したがって、問題はあなたが投稿しなかったコードにあります。私たちに推測させないでください。問題を示す[SSCCE](http://sscce.org)を投稿してください。 – camickr

答えて

0

ほとんどの場合、新しいテキストを描画する前に、古いテキストが背景色だった領域を塗りつぶす必要があります。

+1

JPanelは独自の背景をペイントします。 super.paintComponent()を呼び出すと、これが完了したことが確認されます。これがうまくいく理由は、ポスターがパネルの不透明度で演奏されている場合のみです。 – camickr

0

おっと、エラーは実際にどこか他の場所にあったので、私のクラスはJPanel以外のスーパークラスを持っていたことを本当に忘れてしまいました。

+1

そのため、SSCCEはすべての質問に投稿する必要があります。それは愚かな間違いを排除するので、本当の問題に時間を費やすことができます。 – camickr