Java 将布局换行两行

Java 将布局换行两行,java,layout,layout-manager,miglayout,Java,Layout,Layout Manager,Miglayout,我刚开始使用MigLayout 我阅读了一些文档,包括MigLayout的快速入门指南,并搜索了一些SO问题,但没有找到答案。我相信这是显而易见的,但就像我说的,这是我第一次和这个布局经理在一起 我试图使我的布局中的一行比其他行高一倍 我的代码一开始是: public GameWindow() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new MigLayout("fill")); add(ne

我刚开始使用MigLayout

我阅读了一些文档,包括MigLayout的快速入门指南,并搜索了一些SO问题,但没有找到答案。我相信这是显而易见的,但就像我说的,这是我第一次和这个布局经理在一起

我试图使我的布局中的一行比其他行高一倍

我的代码一开始是:

public GameWindow() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new MigLayout("fill"));
    add(new PanelHud(), "grow, span 2, wrap");
    add(new PanelWorldView(), "grow");
    add(new PanelDetailView(), "grow, wrap");
    add(new PanelMenu(), "grow, span 2");
    pack();
    setVisible(true);
}
产生:

这是一个好的开始,但我想要的是中间一排的高度是上下两排的两倍。起初,我以为我可以让中间的元素跨越两行,但这不起作用:

public GameWindow() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new MigLayout("fill"));
    add(new PanelHud(), "grow, span 2, wrap");
    add(new PanelWorldView(), "grow, span 1 2");
    add(new PanelDetailView(), "grow, span 1 2, wrap");
    add(new PanelMenu(), "grow, span 2");
    pack();
    setVisible(true);
}

看起来中间一行的大小确实正确,但底部一行被替换了。如何解决这个问题?

3种可能的解决方案(我可能有点过火了)

使用自动换行,以便miglayout本身检测整行:

setLayout(new MigLayout("fill, wrap 2"));
add(new PanelHud(), "grow, span 2");
add(new PanelWorldView(), "grow, span 1 2");
add(new PanelDetailView(), "grow, span 1 2");
add(new PanelMenu(), "grow, span 2");
基于单元格进行布局:

setLayout(new MigLayout("fill", "[][]", "[][][][]"));
add(new PanelHud(), "grow, cell 0 0 2 1");
add(new PanelWorldView(), "grow, cell 0 1 1 2");
add(new PanelDetailView(), "grow, cell 1 1 1 2");
add(new PanelMenu(), "grow, cell 0 3 2 1");
使用“增加重量”(尽管对于小窗口大小,这似乎不能保持2:1的比例):

3种可能的解决方案(我可能有点过火了)

使用自动换行,以便miglayout本身检测整行:

setLayout(new MigLayout("fill, wrap 2"));
add(new PanelHud(), "grow, span 2");
add(new PanelWorldView(), "grow, span 1 2");
add(new PanelDetailView(), "grow, span 1 2");
add(new PanelMenu(), "grow, span 2");
基于单元格进行布局:

setLayout(new MigLayout("fill", "[][]", "[][][][]"));
add(new PanelHud(), "grow, cell 0 0 2 1");
add(new PanelWorldView(), "grow, cell 0 1 1 2");
add(new PanelDetailView(), "grow, cell 1 1 1 2");
add(new PanelMenu(), "grow, cell 0 3 2 1");
使用“增加重量”(尽管对于小窗口大小,这似乎不能保持2:1的比例):