Próbuję zrozumieć, kiedy użyć revalidate/repaint/pack.Cykl odświeżania Swing
Zaskakująco nie znalazłem zbyt szczegółowej dokumentacji pod maską (nie krępuj się linkować).
Do tej pory zrozumiałem, że to wszystko leży w gestii aplikacji RepaintManager.
- farba/przemalować odnoszą się do tego, co uważa za brudne/czyste
- paczka/potwierdzić/revalidate odnoszą się do tego, co jest ważne
This article on Oracle wyjaśnia, że wywołanie repaint kolejkuje pracę na temat Event Dispatcher to z kolei wywoła paintImmediately() na komponencie (to przerysuje komponent).
This trail wskazuje, że być lub nie być ważne, jest powiązane z menedżerem układu LayoutManager. I to wszystko dotyczy rozmiaru komponentu, a nie treści.
- Czy to prawda, że powinieneś wywoływać revalidate po przeniesieniu/zmianie rozmiaru komponentu i przemalowaniu, gdy zmienisz jego zawartość?
- Czy metoda pack() jest rzeczywiście przestarzałą rzeczą, której nigdy nie należy wywoływać?
- Czy któreś z powyższych twierdzeń jest błędne?
Czy można zdefiniować farbę pod kątem zmian, które ona powoduje? Zaczynam wątpić, że całkowicie rozumiem, co to znaczy. – kotoko
@kotoko Nie jestem pewien, czy otrzymuję odpowiedź, której szukasz (komentarz). Podczas malowania (implementacja metody 'paintComponent()' oznacza to, że rysujesz linie, okręgi (wypełnione lub nie), prostokąty (wypełnione lub nie), obrazy, tekst itp. (Wszystkie operacje, które możesz wykonać) faktycznie wywołują na 'Graphics/Graphics2D'). –
Próbowałem zrozumieć, jakie metody wywołały co.Teraz mam to (zasada): działanie układu/komponentu wpływa, jeśli jest prawidłowe (twoje 1.); Operacje grafiki/grafiki2D wpływają na brudne. – kotoko