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
.