Я собираю приложение Swing, где я часто хочу заменить содержимое JPanel. Чтобы сделать это, я звоню removeAll()
, а затем добавляю свой новый контент, а затем вызываю revalidate()
.Java Swing revalidate() vs repaint()
Однако я нахожу, что старый контент по-прежнему на самом деле видимый (хотя и скрыт от нового содержимого). Если я добавлю вызов repaint()
в дополнение к revalidate()
, он работает должным образом.
Я уверен, что в других случаях я испытал, что достаточно просто позвонить revalidate()
.
Так что в основном мой вопрос: должен ли мне звонить обе функции, а если нет, то когда я должен позвонить каждому из них?
[Этот учебник от Oracle] (http://docs.oracle.com/javase/tutorial/uiswing/components/jcomponent.html # custompaintingapi): «Всегда вызывать перерисовку после повторной проверки». Однако никаких объяснений не предусмотрено. – mins