Удалить компонент Swing с помощью проверки или повторной проверки

Всякий раз, когда я удаляю и добавляю компоненты Swing, скажем, из JPanel, должен ли я выполнять вызов при проверке или повторной проверке?


person Cheok Yan Cheng    schedule 13.05.2009    source источник


Ответы (4)


revalidate() в основном представляет собой invalidate(), за которым следует validate().

Посмотрите на исходный код Sun Java.

Вы хотите позвонить revalidate().

person Avrom    schedule 14.05.2009
comment
в основном растягивает его. Если вы сделаете invalidate(), а затем validate(), вы не получите тех же результатов, что и revalidate(). - person Jason S; 14.06.2011

revalidate() было бы лучше. revalidate() помечает весь контейнер до верхнего уровня как неправильный или недопустимый. Затем он вызывает validate() на верхнем уровне. Метод validate() родителя проверяет, не является ли хотя бы один из его непосредственных дочерних элементов недействительным или неправильным. он вызывает проверку родителя. поэтому вызов revalidate() автоматически означает вызов validate().

person sazamsk    schedule 13.05.2009

По крайней мере, в Java 7 revalidate() не обязательно "стирает" удаленные компоненты с экрана. Я считаю, что это происходит, когда ограничивающая рамка сжимается. В этих случаях вызовите repaint() после revalidate().

person htimesh    schedule 28.06.2012

Я бы подумал, что revalidate() - это то, что вы хотите. Метод validate() будет автоматически вызываться после вызова revalidate(). См. Java API для JComponent.revalidate ().

person Nicholas Hirras    schedule 13.05.2009