validate()
: в Swing при создании компонента он не равен valid
, т.е. его действительное свойство равно false
. Компонент считается действительным, когда его ширина, высота, местоположение и материал определены. Обычно это делается путем вызова их validate()
метода, прямо или косвенно. Когда мы вызываем validate()
для контейнеров, он проверяет контейнер (если он недопустим), вызывая его метод doLayout()
, который обычно вызывает LayoutManager
. Теперь каждый дочерний элемент, помещенный в этот контейнер, будет проверен рекурсивно, так что все дерево будет разложено и станет действительным.
revalidate()
: revalidate()
вызывается при изменении атрибута, который влияет на их ширину / высоту, и вызывается repaint () при изменении атрибута, который влияет на их внешний вид.
Например, если ваш JFrame
содержит JPanel
, теперь в определенный момент вы удалили этот JPanel
и вставили на его место новый, в зависимости от содержимого вновь установленного JPanel
, размер компонентов внутри JPanel
, а также самого The CONTAINER
(в силу используемого им менеджера компоновки). Что толкает его в недопустимое состояние. Таким образом, чтобы подтвердить это изменение, вы должны явно позвонить revalidate()
.
invalidate()
: Это то, чем я никогда не пользовался, поэтому я не могу предоставить много информации об этом. Но кажется, что сценарии, представленные выше, могут дать некоторую подсказку о том, что происходит при использовании invalidate()
.