Проблемы с перерисовкой Java JPanel
Вопрос
У меня есть приложение Java Swing с панелью, содержащей три JComboBoxe
которые не рисуют должным образом.
Поля со списком просто отображаются в виде стрелки вниз с правой стороны, но без метки текущего выбранного значения.
Поля будут перерисовываться правильно, если размер окна будет увеличен или уменьшен хотя бы на один пиксель.
Все мои поиски в Google указывали на звонок revalidate()
на JPanel
чтобы это исправить, но у меня это не сработало.
Вызов updateUI()
на JPanel
изменил его с постоянного отображения на неправильное в половине случаев.
Кто-нибудь еще видел это и нашел другой способ принудительно перерисовать поля со списком?
Решение
Можете ли вы дать нам дополнительную информацию о том, как добавить поля со списком в JPanel?Это довольно распространенная вещь в Swing, поэтому я сомневаюсь, что это проблема JVM, но думаю, что все возможно.
В частности, я бы дважды проверил, чтобы убедиться, что вы не получаете доступ к графическому интерфейсу из каких-либо фоновых потоков.В этом случае, возможно, вы читаете варианты из БД или чего-то еще и обновляете JComboBox из фонового потока, что в Swing категорически запрещено.См. SwingUtils.invokeLater().