Можно ли динамически добавлять компоненты в середину BoxLayout? - PullRequest
2 голосов
/ 08 февраля 2012

Я создаю небольшое приложение Swing, в котором я создал панель контента с BoxLayout, выровненным по оси Y, и добавил к нему еще 2 JPanels. Все идет нормально.

Теперь я столкнулся с проблемой, когда мне нужно заново создать первую JPanel и добавить ее в середину двух других JPanel.

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

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

Спасибо.

Ответы [ 2 ]

5 голосов
/ 08 февраля 2012

Ознакомьтесь с Container API. Метод add(...) имеет перегруженные методы, которые позволяют вам указать положение компонента в контейнере. Тогда revalidate() и repaint() панель.

4 голосов
/ 08 февраля 2012

Я бы просто удалил все компоненты, а затем повторно добавил их в нужном порядке, обязательно вызвав revalidate() и repaint() в контейнере с использованием BoxLayout после того, как вы выполнили это действие.

Если вам нужен сам графический интерфейс для изменения размера, вам, возможно, придется вызвать pack() в окне верхнего уровня, содержащем эти компоненты.

...