2010-06-29 2 views
9

Я пытаюсь создать макет, который будет выглядеть как:Как ... с MigLayout

+---+--------+---+ 
| |  | | 
| |  | | 
+---+  +---+ 
| |  | | 
| |  | | 
+---+--------+---+ 

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

val panel = new JPanel(new MigLayout("debug", "grow","grow")) 
    panel.add(new JPanel) 
    panel.add(new JPanel, "span 2 2") 
    panel.add(new JPanel, "wrap") 
    panel.add(new JPanel) 
    panel.add(new JPanel) 

Но в результате все мои клетки имеют одинаковую ширину:

+----+----+----+ 
| | | | 
| | | | 
+----+ +----+ 
| | | | 
| | | | 
+----+----+----+ 

Что я делаю не так? Я использую Scala, но я не думаю, что проблема здесь.

ОБНОВЛЕНИЕ Возможно, кто-то может объяснить, почему это не сработало. Даже если я пытаюсь воспроизвести пример из QuickStart руководства он не работает:

alt text http://www.freeimagehosting.net/uploads/d306693273.png

Моего код:

val panel = new JPanel(new MigLayout("debug", "grow","grow")) 
    wrapTab.add(new JPanel) 
    wrapTab.add(new JPanel, "span 2 2") 
    wrapTab.add(new JPanel, "wrap") 
    wrapTab.add(new JPanel) 
    wrapTab.add(new JPanel, "wrap") 
    wrapTab.add(new JPanel) 
    wrapTab.add(new JPanel) 

И как результат всех перевалов имеют одинаковые размеры.

ответ

11
val panel = new JPanel(new MigLayout("debug", 
       "[grow 25][grow 50][grow 25]","grow")) 
panel.add(new JPanel) 
panel.add(new JPanel, "spany 2") 
panel.add(new JPanel, "wrap") 
panel.add(new JPanel) 
panel.add(new JPanel) 
+0

Не могли бы вы объяснить, пожалуйста. И почему мой метод не сработал? Я использую руководство QuickStart, и мой пример очень похож на один из примеров. – aindl

+5

@masterzim: Я предполагаю, что когда вы закончили вставлять вещи, «MigLayout» посмотрел, что было вставлено, и решил, что на самом деле было всего три столбца, поэтому он решил весить эти 3 столбца одинаково. (Я мог ошибаться в этой логике. Я никогда раньше не использовал «MigLayout», и редко когда-либо писал программы с графическим интерфейсом, я просто просмотрел все руководство по быстрому началу работы и решил попробовать другую стратегию, чем ваша. проверил мое решение, поэтому я знаю, что он работает.) –

+1

Для записи: Столбцы не обязательно имеют одинаковую ширину, два растянутых столбца были заданы на половину ширины других столбцов, потому что они имели половину содержимого. Исходная попытка работала бы в макете, где были строки выше/ниже охватывающего компонента. –

Смежные вопросы