Проблемы с Java - GridLayout
-
21-09-2019 - |
Вопрос
Я делаю школьный проект, и мне нужна помощь с Версткой, потому что там делается кое-что прикольное.
Мне нужна помощь только с южной панелью.Южная панель организована примерно так:
JRadioButton JLabel1 JLabel2
JRadioButton JLabel1 JLabel2
JLabel3--------JTextField----------JButton
Я попробовал следующее:
- Установите южную JPanel в виде сетки с 3 рядами
- Другая JPanel также с gridlayout с 3 строками, добавленными к первой строке gridlayout.
- Повторите №2 со вторым и третьим рядами.Вторая строка состоит из 3 строк по 3 столбца.
- Добавлены компоненты в соответствующие строки / столбцы.
Форматируется не так, как мне нужно.Я пробовал некоторые другие методы, которые не могу вспомнить.Есть какие-нибудь предложения?Спасибо.Вот изображение того, как должна выглядеть южная панель: http://www.freeimagehosting.net/image.php?d14a73db5e.jpg
Он начинается с "Даты начала ..."
Решение
Создайте новый JPanel
и использовать Расположение группы за это.
Вот так http://img163.imageshack.us/img163/1403/capturadepantalla201001bo.png
Использование компоновки группы позволяет указать компоненты, которые будут помещены в горизонтальную группу, и компоненты, которые будут помещены в вертикальную группу.
c1, c2, c3
c4, c5, c6
panel[ c7, c8, c9 ]
Вот как я оформляю изображение выше:
// Layout Horizontal components
layout.setHorizontalGroup(
layout.createSequentialGroup()
.addGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent( c1 )
.addComponent( c4 )
).addGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent( c2 )
.addComponent( c5)
).addGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent( c3 )
.addComponent( c6 )
)
);
// Layout vertical components
layout.setVerticalGroup(
layout.createSequentialGroup()
.addGroup(
layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent( c1 )
.addComponent( c2 )
.addComponent( c3 )
).addGroup(
layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent( c4 )
.addComponent( c5 )
.addComponent( c6 )
)
);
southPanel.add( panel ); // the start-end dates
southPanel.add( bookIt, BorderLayout.SOUTH ); // the enter your name...
Дайте ему попробовать.
Другие советы
Что бы я сделал для южной JPanel, так это сделал ее сеткой размером 1x3, затем добавил три компонента первой строки в горизонтальное поле и добавил его в сетку, затем три компонента второй строки в другое горизонтальное поле и добавил его в сетку, затем три компонента третьей строки в сетку размером 3x1 и добавил ее в сетку.Затем вы можете точно настроить желаемый внешний вид первых двух линий, добавив различные компоненты клея и распорки.
Я создаю большинство своих макетов, помещая jpanels или коробки внутрь других с другими макетами.Это дает вам довольно хороший контроль над тем, что вы хотите, и позволяет создавать это по частям за раз.
Похоже, вам бы хотелось иметь сеточное описание с 3 столбцы, а не 3 строки для нижней панели есть.
На изображении по ссылке, которую вы включили, текстовое поле шире, чем JLabel или кнопка.Возможно, вы захотите попробовать Расположение сетки вместо этого.
Недавно я наткнулся на MigLayout, я попробую использовать его в моем следующем университетском проекте, и я бы посоветовал вам попробовать, также это выглядит действительно круто и просто.