我刚刚开始使用MigLayout。
我已经阅读了一些文档,包括MigLayout的快速入门指南,并搜索了一些这样的问题,但我没有找到答案。我相信这是显而易见的,但就像我说的,这是我第一次和这个布局经理在一起。
我正试图使我的MigLayout中的一行的高度是其他行的两倍。
我的代码一开始是:
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);
}

看起来中间的行确实是正确的大小,但是底部的行被移开了。我怎么才能解决这个问题?
发布于 2016-11-10 11:31:23
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比例):
setLayout(new MigLayout("fill", "[][]", "[grow 100][grow 200][grow 100]"));
add(new PanelHud(), "grow, span 2, wrap");
add(new PanelWorldView(), "grow");
add(new PanelDetailView(), "grow, wrap");
add(new PanelMenu(), "grow, span 2");https://stackoverflow.com/questions/40453184
复制相似问题