validate(): У Swing при створенні компонента це не validє його дійсним властивістю false. Компонент, як кажуть, є дійсним, коли визначили його ширину, висоту, розташування та інше. Зазвичай це відбувається шляхом виклику їх validate()методу, прямо чи опосередковано. Коли ми зателефонуємо validate()на контейнери, він перевірить контейнер (якщо він недійсний), зателефонувавши до його doLayout()методу, який, як правило, викликає LayoutManager. Тепер кожна дитина, поміщена в цей контейнер, буде перевірена рекурсивно, так що все дерево буде викладено і стане дійсним.
revalidate(): revalidate()викликається, коли ви змінюєте атрибут, який би вплинув на їх ширину / висоту, і виклику перефарбуйте (), коли ви зміните атрибут, який вплине на їх зовнішній вигляд. Наприклад, якщо ваш JFrameмістить a JPanel, тепер ви в певний момент часу ви видалили його JPanelі вставили на його місце новий, залежно від вмісту щойно розміщеного JPanel, розміру компонентів всередині JPanel, а також The CONTAINERсамого себе (в силу використовуваного ним менеджера компонування), змінюється. Що підштовхує його до недійсного стану. Отже, щоб підтвердити цю зміну, вам потрібно явно зателефонувати revalidate().
invalidate(): Це те, що я ніколи не використовував, тому може бути не так багато інформації, яку я можу надати про це. Але схоже, що сценарії, представлені вище, можуть дати трохи підказки щодо того, що відбувається під час використання invalidate().
revalidate()не дзвонитьdoLayout(), щоvalidate()робить. Тож це насправді не сума обох -revalidateне завжди є дійсною заміноюvalidate.