- Che cosa fa?
stampa il componente come se non avesse sovrascritto il metodo paintComponent
. Se si dispone di un set di colori di sfondo, ad esempio, questo è in genere dipinto dalla classe che si sta estendendo.
- Quando è necessario utilizzarlo?
Lo si utilizza se non si dipinge sull'intero componente. Le parti che non dipingerai "splenderanno", il che significa che dovresti lasciare che la super classe dipingi quelle parti. Come per l'esempio del colore di sfondo, ad esempio: se dipingi un cerchio al centro del componente, super.paintComponent
assicurerà che il colore dello sfondo sia dipinto attorno al cerchio.
Se si do si dipinge l'intera area del componente, quindi si dipingerà sopra qualsiasi vernice di super.paintComponent e quindi non ha senso chiamare super.paintComponent.
- Quale vantaggio ci offre scrivendolo in paintComponent()?
Questo è l'unico posto logico per dirlo. paintComponent
viene chiamato quando il componente deve essere dipinto e, come menzionato sopra, se non si dipinge l'intero componente da soli, è necessario super.paintComponent
per dipingere sulle parti che passano attraverso.
The documentation di paintComponent
dice abbastanza bene:
[...] se non si Invoker implementazione del super-è necessario onorare la proprietà opaco, cioè se questo componente è opaco, è necessario riempire completamente in lo sfondo in un colore non opaco. Se non onorate la proprietà opaca, probabilmente vedrete artefatti visivi.
_ .. "e tutto sembra funzionare bene" _ - Prova a fare un po '[animazione] (http://stackoverflow.com/a/22123304/2587435) senza chiamare e vedere cosa succede. Il risultato dovrebbe darti una buona comprensione del perché dovremmo chiamarlo. Vedi [risultato di non chiamarlo] (http://stackoverflow.com/q/26477521/2587435) –
Perché il voto negativo? – user3437460
Non ero io ... –