如何...与MigLayout

9 java swing scala miglayout

我正在尝试创建一个看起来像这样的布局:

+---+--------+---+
|   |        |   |
|   |        |   |
+---+        +---+
|   |        |   |
|   |        |   |
+---+--------+---+
Run Code Online (Sandbox Code Playgroud)

中央细胞应该是其他细胞的两倍.我正在尝试使用这样的代码实现此目的:

    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)
Run Code Online (Sandbox Code Playgroud)

但结果我所有的细胞都有相同的宽度:

+----+----+----+
|    |    |    |
|    |    |    |
+----+    +----+
|    |    |    |
|    |    |    |
+----+----+----+
Run Code Online (Sandbox Code Playgroud)

我做错了什么?我正在使用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)
Run Code Online (Sandbox Code Playgroud)

结果所有cols都有相同的大小.

Ken*_*oom 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)
Run Code Online (Sandbox Code Playgroud)

  • @masterzim:我猜测当你完成插入内容时,`MigLayout`看起来已经插入了什么,并确定实际上只有3列的东西,所以它决定平均加权这3列.(我对这个逻辑可能是错的.我之前从未使用过`MigLayout`,而且很少编写GUI程序 - 我只是看了整个快速入门指南,并决定尝试不同于你的策略.但我我测试了我的解决方案,所以我知道它有效.) (5认同)