質問

.png画像を描くjpanelがあります。各画像には、選択されたかどうかを示す2コピーがあります。 1つの画像は正常で、選択が行われたことを示すために色付きの境界線があります。 (これらの画像を議論のために単純な形状と考えることができます)

描画される画像のバージョンは、Mouselistenersを介して決定されます。ユーザーがImage1を選択すると、Image1が強調表示されたバージョンを表示します。

一般に、これは機能していますが、repaint()では、画像の強調表示されたバージョンが残されています。ハイライトされたバージョンは通常のバージョンよりもわずかに大きいため、新しく描かれた通常の画像の後ろに突き出ていることがわかります(オーバーラップ)。

ですから、私の質問は、どのようにして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);
}
役に立ちましたか?

解決

Repaint()を作成するには、現在描かれた画像を取り除き、ゼロから開始します。

つまり、塗装前にコンポーネントを背景色で塗り直す方法は?追加してみませんか

g2.setColor(getBackground());
g2.fillRect(0, 0, getWidth(), getHeight());

の上に paintComponent()?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top