Квадратичная JPanel в GridBagLayout - PullRequest
0 голосов
/ 31 января 2012

В основном у меня есть эта настройка

    | JFrame with BorderLayout   |
    | -------------------------- |
    | JPanel with GridBagLayout  |
    | JPanel with NullLayout     |

Размер JFrame можно изменять.JPanel с GridBagLayout содержит коэффициент усиления JPanels и выглядит примерно такСетка теряет свое квадратичное измерение и становится прямоугольником.

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

Ответы [ 2 ]

1 голос
/ 31 января 2012

Вместо использования GridBagLayout рассмотрите возможность использования MigLayout .

. Вы также можете использовать макет null, который устанавливает ширину и высоту каждого компонента как ширину или высоту, деленную налибо количество строк или столбцов (в зависимости от того, как вы хотите это сделать), и установите начальные значения x и y в соответствии с этим:

(total width % number of columns) / 2

и другие просто
initialX + cellWidth * (col - 1) и
initialY + cellWidth * (row - 1).

Вставьте этот код в метод componentResized(ComponentEvent e){...} вашего среднего JPanel ComponentListener и циклически переходите по клеткам (панелям), устанавливая их границы.Это может быть медленный / ручной способ, но вы будете иметь полный контроль над тем, как именно вы хотите, чтобы они изменили размер.

0 голосов
/ 31 января 2012

Посмотрите на примеры на http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/index.html, есть GridBagLayoutDemo и SpringGridDemo, которые могут решить вашу проблему.Или последний выход, сделайте ваше окно неизменяемым (плохим!), Как в GridLayoutDemo ...

...