Swing layout - Использование сетки с сохранением размеров компонентов - PullRequest
1 голос
/ 22 мая 2010

Я хотел бы создать панель входа для приложения, и я не могу понять, как организовать серию JLabels и JTextFields так, чтобы они были организованы в горизонтальной сетке без этих же компонентов быть изменен, чтобы соответствовать каждой ячейке. Я также хочу убедиться, что размер группы компонентов не будет меньше определенной ширины. Как этого достичь?

Редактировать: Спасибо за ответы всем. Я посмотрю на MigLayout и SpringLayout позже. Из-за нехватки времени мне придется обходиться с визуальным редактором и использовать нулевой макет. Расположение и размеры компонентов должны быть отрегулированы вручную, но, по крайней мере, они остаются на месте. Вот картинка, показывающая, что я хотел сделать.

бар http://img145.imageshack.us/img145/7356/bargw.png

Ответы [ 3 ]

3 голосов
/ 22 мая 2010

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

Возможно, вам нужны дополнительные ячейки, которые «растут», чтобы заполнить оставшееся пространство. Это может быть достигнуто с помощью ограничений на столбцы путем вставки «push» между столбцами (указывается как [..]), чтобы увеличить разрыв. Вам не нужны никакие компоненты-заполнители в этом случае. (то есть, [pref!] 10px [40px ::] push [pref!] 10px [40px ::])

2 голосов
/ 22 мая 2010

Ознакомьтесь с разделом из учебника по Swing на Использование менеджеров по макету .

SpringLayout имеет пример, который точно соответствует этому.

GridBagLayout более сложен в использовании, но также поддерживает макет типа строки / столбца.

Наконец, вы все еще можете использовать GridLayout. Просто добавьте текстовые поля в JPanel, затем панель будет расти, а текстовое поле - нет.

2 голосов
/ 22 мая 2010

Вы должны использовать другой макет. FlowLayout или BoxLayout будут работать в вашем случае, но я бы предложил MigLayout просто потому, что он покрывает все ваши потребности и заменяет все остальные.

...