Всякий раз, когда я удаляю и добавляю компоненты Swing, скажем, из JPanel, должен ли я выполнять вызов при проверке или повторной проверке?
Вопрос
Удалить компонент Swing с помощью проверки или повторной проверки
Ответы
Ответ 1 · рейтинг 4 · Avrom
revalidate() в основном представляет собой invalidate(), за которым следует validate().
Посмотрите на исходный код Sun Java.
Вы хотите позвонить revalidate().
Ответ 2 · рейтинг 9 · sazamsk
revalidate() было бы лучше. revalidate() помечает весь контейнер до верхнего уровня как неправильный или недопустимый. Затем он вызывает validate() на верхнем уровне. Метод validate() родителя проверяет, не является ли хотя бы один из его непосредственных дочерних элементов недействительным или неправильным. он вызывает проверку родителя. поэтому вызов revalidate() автоматически означает вызов validate().
Ответ 3 · рейтинг 4 · htimesh
По крайней мере, в Java 7 revalidate() не обязательно "стирает" удаленные компоненты с экрана. Я считаю, что это происходит, когда ограничивающая рамка сжимается. В этих случаях вызовите repaint() после revalidate().
Ответ 4 · рейтинг 3 · Nicholas Hirras
Я бы подумал, что revalidate() - это то, что вы хотите. Метод validate() будет автоматически вызываться после вызова revalidate(). См. Java API для JComponent.revalidate ().
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.