Java Swing подтверждает () по сравнению с перекрашиванием ()

Можно ли разработать немного больше на точно, что Вы пытаетесь выполнить с этим запросом?

Также смотрят на в: опция соединений для находки. Это позволяет Вам определять, как Вы хотите таблицы, к которым присоединяются. текст ссылки

И остерегаются при использовании: включайте, поведение изменяется немного в направляющих 2.1 и может вызвать некоторые проблемы, когда используется в сочетании с a: опция условий, которая ссылается на включенную таблицу. текст ссылки и текст ссылки является двумя статьями от Основных, которые упоминают этот глюк.

206
задан Ben 20 October 2011 в 01:17
поделиться

3 ответа

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

В более общем плане примечание: вместо повторного использования исходной панели я бы рекомендовал создать новую панель и поменять их местами на родительской.

154
ответ дан 23 November 2019 в 04:49
поделиться

revalidate вызывается в контейнере после добавления новых компонентов или удаления старых. этот вызов является инструкцией диспетчеру компоновки о необходимости сброса на основе нового списка компонентов. revalidate инициирует вызов для перерисовки того, что компонент считает «грязными областями». Очевидно, что не все области вашей JPanel считаются грязными RepaintManager .

repaint используется для указания компоненту перерисовать себя.

58
ответ дан 23 November 2019 в 04:49
поделиться

Каждый раз, когда вы выполняете remove () или removeAll (), вы должны вызывать

  validate();
  repaint();

после завершения добавления () новых компонентов.

Вызов validate () или revalidate () является обязательным при выполнении remove () - см. Соответствующие javadocs.

Мое собственное тестирование показывает, что repaint () также необходим. Не знаю, почему.

84
ответ дан 23 November 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: