paintComponent () lasciando dietro di immagini precedentemente elaborate dopo repaint ()
-
28-09-2019 - |
Domanda
Ho un JPanel che attira le immagini .png. ogni immagine ha 2 copie a significare se sia o non è stato selezionato. Un'immagine è normale e uno ha un bordo colorato per indicare la selezione è stata fatta. (Si può pensare a queste immagini come forme semplici per amor di discussione)
Quale versione di immagine viene disegnata è determinato tramite MouseListeners. Se l'utente seleziona image1, allora image1 visualizzerà sua versione evidenziato.
In generale questo è in funzione, però su di riverniciare () la versione evidenziata dell'immagine è lasciato alle spalle. Dal momento che la versione evidenziata è leggermente più grande rispetto alla versione normale, si può vedere che spuntava dietro l'immagine normale appena prelevato (sovrapposizione).
ho pensato repaint () avrebbe dovuto completamente smaltire dei disegni attuali e ripartire da zero, questo non sembra essere il caso qui. Qui di seguito è l'idea generale, blackClicked è attivata all'interno di una MouseListener.
Quindi la mia domanda è: come faccio a fare repaint () sbarazzarsi delle sue immagini tratte attualmente e ripartire da zero.
Inoltre, se c'è un modo più semplice per ottenere tutto questo per favore fatemelo sapere, rendendo 2 copie di immagini è un lavoro noioso.
@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);
}
Soluzione
come faccio a fare repaint () sbarazzarsi delle sue immagini tratte attualmente e ripartire da zero.
Vuoi dire, come fare riempimento riverniciare la componente con il colore di sfondo di essa la prima della verniciatura? Ne dite di aggiungere
g2.setColor(getBackground());
g2.fillRect(0, 0, getWidth(), getHeight());
in cima paintComponent()
?