2012-02-07 3 views
0


Я пытаюсь сделать простой макет игры. Я делаю свой макет из Контейнеров - все контейнеры похожи на мой пример (это означает JPanel, setlayout, добавить компоненты, вернуть JPanel).
GridBagLayout troubles

Структура всего макета: (это 3 в основной компоновке)
верхний - BorderLayout.PAGE_START; // menu
центр - BorderLayout.PAGE_CENTER; // centerContainer()
bottom - BorderLayout.PAGE_END; // statusBar - только контейнер с текстом

размещение этих трех контейнеров отлично работает, но проблема заключается в размещении в центре Контейнера.
Центральная контейнерная структура: 3 контейнера - aboutServerContainer, aboutGameContainer, gameContainer.

gameContainer имеет размер 450x450

Я хочу начать serveInfo в той же высоте, как gameContainer и gameInfo под serverInfo, , но это как-то cernter serverInfo и gameInfo является uder, но это также сделать свободное пространство под gameContainer (Я не хочу никакого свободного места здесь.)

enter image description here

private Container centerContainer() { 
     JPanel centerJPanelJP = new JPanel(); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     stredniJPanelJP.setLayout(new GridBagLayout()); 

     //gbc.fill = GridBagConstraints.BOTH; 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     gbc.gridheight = 1; 
     centerJPanelJP.add(aboutServerContainer(),gbc); 

     gbc.gridheight = 1; 
     gbc.gridy = 1; 
     centerJPanelJP.add(aboutGameContainer(),gbc); 

     gbc.gridheight = 2; 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     centerJPanelJP.add(gamePanelContainer(),gbc); 

     return centerJPanelJP; 
    } 
+1

Действительно ли это ваш код? Является ли 'gridx' всегда 0? –

+1

, пожалуйста, опубликуйте http://sscce.org/, демонстрируя свои проблемы. – mKorbel

+0

@ TomHawtin-tackline да, но это, вероятно, неправильно. У меня есть некоторые проблемы с пониманием использования gridx, gridy. – user1097772

ответ

3

Похоже, вы пытаетесь достичь такого макета, как это:

+-----+-----+ 
| A |  | 
+-----+ C | 
| B |  | 
+-----+-----+ 

Для достижения этой цели, вы сетка ограничение должно быть:

| x y width height 
--+--------------------- 
A | 0 0 1  1 
B | 0 1 1  1 
C | 1 0 1  2 

На моем взгляде, лучше последовательно использовать «мощный» менеджер компоновки, чем иметь дело с особыми случаями, вложенные панелями и негибкость выстраивания вещей.

+0

Это именно то, что мне нужно. Благодарю. Какой «мощный» менеджер макетов вы имеете в виду? – user1097772

0

Почему бы не так:

не имеет основную BroderLayout

  • добавить нечего к PAGE_START центра контейнера
  • добавить в ЦЕНТР
  • добавить VerticalPanel к LINE_START -в вертикальной панели добавить serverInfo -в вертикальной панели добавить gameInfo -add статуса bar на PAGE_END
+0

. Я не хочу добавлять дополнительный контейнер в основной контейнер. Я хочу отредактировать мой контейнер Center. – user1097772