Java - проблемы GridLayout - PullRequest
       9

Java - проблемы GridLayout

2 голосов
/ 16 января 2010

Я делаю школьный проект и мне нужна помощь с макетом, потому что он делает что-то интересное.

Мне нужна только помощь с южной панелью. Южная панель организована примерно так:

           JRadioButton JLabel1 JLabel2
           JRadioButton JLabel1 JLabel2
    JLabel3--------JTextField----------JButton

Я пробовал следующее:

  1. Установите юг JPanel в сетку с 3 рядами
  2. Еще одна JPanel, также с разметкой сетки с 3 рядами, добавленными к первой строке разметки сетки.
  3. Повторите # 2 со вторым и третьим рядами. Второй ряд имеет 3 строки по 3 столбца.
  4. Добавлены компоненты в соответствующие строки / столбцы.

Не форматирует так, как мне нужно. Я пробовал некоторые другие методы, которые я не помню. Какие-либо предложения? Спасибо. Вот изображение того, как должна выглядеть южная панель: http://www.freeimagehosting.net/image.php?d14a73db5e.jpg

Начинается с «Даты начала ...»

Ответы [ 4 ]

3 голосов
/ 16 января 2010

Создайте новый 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... 

Дайте ему попытку.

1 голос
/ 16 января 2010

Что бы я сделал для южной JPanel, сделайте ее сеткой 1x3, затем добавьте три компонента первого ряда в горизонтальный блок и добавьте его в сетку, затем три компонента второго ряда в другой горизонтальный блок. и добавьте его в сетку, затем три компонента третьего ряда в сетку 3x1 и добавьте ее в сетку. Затем вы можете настроить точный внешний вид первых двух строк, добавив различные компоненты клея и распорок.

Я достигаю большинства своих макетов, размещая jpanels или Boxs внутри других с различными макетами. Это дает вам довольно хороший контроль над тем, что вы хотите, и позволяет создавать его за раз.

0 голосов
/ 16 января 2010

Недавно я наткнулся на MigLayout, попробую использовать его в своем следующем университетском проекте, и я бы посоветовал вам попробовать его, и это выглядит действительно круто и просто.

0 голосов
/ 16 января 2010

Похоже, что вы хотите GridLayout с 3 столбцами , а не 3 строками для нижней панели.

На изображении по указанной вами ссылке текстовое поле шире, чем JLabel или кнопка. Вы можете вместо этого попробовать GridBagLayout .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...