2013-02-13 3 views
0

У меня есть проблемы с качели.Качающаяся картина №

Следующий пользовательский интерфейс (см. Следующий рисунок) имеет JTextField с левой стороны, который имеет возможность показывать подсказки автозаполнения. С правой стороны должны быть показаны элементы, которые выбираются из текстового поля. Эти элементы содержатся в JPanel, который использует FlowLayout (FlowLayout.LEFT) в качестве менеджера компоновки.

my ui

Теперь при выборе некоторых элементов из текстового поля, которое будет добавлено к FlowLayout, элементы не будут окрашены. (Показано на следующем рисунке) New elements won't be painted

Теперь у меня есть две возможности показать эти непокрашенные элементы.

Первый: после изменения размера JFrame будут показаны элементы.

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

Элементы после разрыва строки FlowLayout:

Elements after a FlowLayout line break

Что я могу сделать?

+0

Попробуйте вызвать 'revalidate()' на панели FlowLayout после добавления элемента. Это заставит менеджера компоновки снова компоновать компоненты. Я не могу предложить больше, чем без кода. Проблема также может быть в вашем методе окраски зеленых компонентов. –

+0

Если 'revalidate()' не работает, попробуйте добавить 'repaint()'. –

+0

Я уже пробовал следующие «магические» методы swing: validate(), revalidate(), repaint(), updateUI(). – endian

ответ

0

Обмен FlowLayout броском пользовательских WrapLayout исправил проблему. Кажется, это была проблема макета.