.png画像を描画するJPanelがあります。各画像には、選択されているかどうかを示す2つのコピーがあります。1つの画像は正常で、もう1つの画像には、選択が行われたことを示す色付きの境界線があります。(これらの画像は、議論のために単純な形と考えることができます)
描画される画像のバージョンは、MouseListenersを介して決定されます。ユーザーがimage1を選択すると、image1は強調表示されたバージョンを表示します。
通常、これは機能していますが、repaint()を実行すると、強調表示されたバージョンの画像が残されます。ハイライトされたバージョンは通常のバージョンよりもわずかに大きいため、新しく描画された通常の画像の後ろに突き出ている(オーバーラップしている)ことがわかります。
repaint()は現在の図面を完全に破棄し、最初から開始することになっていると思いましたが、ここではそうではないようです。以下は一般的な考え方です。blackClickedはMouseListener内で切り替えられます。
だから私の質問は、repaint()に現在描画されている画像を取り除き、最初から始めるにはどうすればよいかということです。
また、これをすべて達成するためのより簡単な方法がある場合は、私に知らせてください。画像のコピーを2つ作成するのは面倒な作業です。
@Override
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
if(blackClicked)
g2.drawImage(blackSelected,0, 0, null);
else
g2.drawImage(black,0, 0, null);
g2.drawImage(green,0, 0, null);
}