validate()
: W Swingu, kiedy tworzysz komponent, to nie jest, valid
tj. Jego prawidłowa właściwość jest false
. Mówi się, że komponent jest ważny, gdy jego szerokość, wysokość, położenie i inne rzeczy zostały określone. Odbywa się to zwykle przez wywołanie ich validate()
metody, bezpośrednio lub pośrednio. Kiedy wywołujemy validate()
kontenery, zweryfikuje kontener (jeśli jest nieprawidłowy), wywołując jego doLayout()
metodę, która zwykle wywoła LayoutManager
. Teraz każde dziecko umieszczone w tym kontenerze będzie walidowane rekurencyjnie, tak że całe drzewo zostanie ułożone i stanie się ważne.
revalidate()
: revalidate()
ma zostać wywołane, gdy zmienisz atrybut, który wpłynąłby na ich szerokość / wysokość, i wywołaj repaint (), gdy zmienisz atrybut, który wpłynie na ich wygląd. Na przykład, jeśli twój JFrame
zawiera a JPanel
, teraz w pewnym momencie usunąłeś go JPanel
i wstawiłeś nowy w jego miejsce, w zależności od zawartości nowo umieszczonego JPanel
, rozmiaru komponentów wewnątrz, JPanel
jak również The CONTAINER
samego (na mocy używanego przez niego menedżera układu), zmiany. Co popycha go do nieprawidłowego stanu. Aby więc zweryfikować tę zmianę, musisz jawnie wywołać revalidate()
.
invalidate()
: To jest coś, czego nigdy nie używałem, więc może nie być wiele informacji na ten temat. Wygląda jednak na to, że przedstawione powyżej scenariusze mogą dać wskazówkę, co się dzieje podczas używania invalidate()
.
revalidate()
nie dzwonidoLayout()
, covalidate()
robi. Więc tak naprawdę nie jest sumą obu -revalidate
nie zawsze jest prawidłowym zamiennikiemvalidate
.