Frage

Ich habe ein JPanel, die .png Bilder zieht. jedes Bild hat zwei Kopien, um anzuzeigen, ob es ausgewählt wurde. Ein Bild ist normal, und man hat einen farbigen Rand um die Auswahl zu bedeuten gemacht worden. (Sie können sich denken, diese Bilder als einfache Formen für die Zwecke der Beweis)

Welche Version des Bildes wird über MouseListeners bestimmt gezogen. Wenn der Benutzer image1, dann wird image1 seine markierte Version angezeigt werden.

Generell dies funktioniert, aber auf repaint () die markierte Version des Bildes hinter sich gelassen. Da die markierte Version etwas größer ist als die normale Version ist, können Sie es sehen hinter dem neu gezeichnete Normalbild ragt (überlappend).

Ich dachte, repaint () sollte vollständig von den aktuellen Zeichnungen verfügen und von Grund auf neu zu starten, dies scheint hier nicht der Fall zu sein. Im Folgenden wird die allgemeine Idee ist blackClicked in einem Mouselistener umgeschaltet.

Also meine Frage ist, wie ich repaint machen () loszuwerden, seine derzeit gezeichneten Bilder und von vorne anfangen.

Auch wenn es eine einfachere Möglichkeit ist all dies zu erreichen, lassen Sie es mich wissen, was 2 Kopien von Bildern ist eine mühsame Arbeit.

@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);
}
War es hilfreich?

Lösung

  

Wie mache ich repaint () loszuwerden, seine derzeit gezeichneten Bilder und von vorne anfangen.

Sie meinen, wie repaint Füllung machen die Komponente mit ihm Hintergrundfarbe des vor dem Malen? Wie über das Hinzufügen

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

in der Oberseite des paintComponent()?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top