paint() en repaint() in Java

Ik heb misschien de afgelopen twee uur rondgekeken en gelezen over deze methoden en de Graphics-klasse, en misschien ben ik dom, haha, maar ik begrijp ze gewoon niet. Waar zijn ze voor? Ik begrijp dat ze verondersteld worden componenten op het scherm opnieuw te tekenen of bij te werken, maar ik heb nooit begrepen waarom dit nodig is (dit is nieuw voor mij). Als ik bijvoorbeeld een JLabel over het scherm beweeg, verplaatst een aanroep naar setLocation() het prima. Is dat een scenario waarin repaint() niet vereist is? In welke scenario’s is het nuttig en waarom?

Excuses als je denkt dat dit een vraag is die kan worden opgelost met de zoekfunctie, maar om wat voor reden dan ook krijg ik het niet.


Antwoord 1, autoriteit 100%

Verschil tussen de methode Paint() en Repaint()

Verf():

Deze methode bevat instructies om dit onderdeel te schilderen. Eigenlijk zou je in Swing paintComponent() moeten wijzigen in plaats van paint(), aangezien paint paintBorder(), paintComponent() en paintChildren() aanroept. Je moet deze methode niet rechtstreeks aanroepen, je moet in plaats daarvan repaint() aanroepen.

Herschilderen():

Deze methode kan niet worden overschreven. Het bestuurt de update() -> verf() cyclus. Je zou deze methode moeten aanroepen om een component zichzelf opnieuw te laten schilderen. Als je iets hebt gedaan om het uiterlijk van het onderdeel te veranderen, maar niet de grootte (zoals het veranderen van kleur, animaties, enz.), roep dan deze methode aan.


Antwoord 2, autoriteit 21%

De methode paint()ondersteunt schilderen via een grafisch object.

De methode repaint()wordt gebruikt om ervoor te zorgen dat paint()wordt aangeroepen door de AWT-schilderijdraad.


Antwoord 3

Het is niet nodig om repaint aan te roepen, tenzij je iets specifieks op een component moet renderen. ‘Iets specifieks’ betekent alles dat niet intern wordt geleverd door de venstertoolkit die u gebruikt.

Other episodes