MigLayout 换行两行
MigLayout wrap two lines
我刚开始使用 MigLayout。
我已经阅读了一些文档,包括 MigLayout 的快速入门指南,还搜索了一些 SO 问题,但没有找到答案。我敢肯定这很明显,但就像我说的,这是我第一次使用这个布局管理器。
我正在尝试使我的 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);
}
看起来中间一排的尺寸确实正确,但底排错了。我该如何解决这个问题?
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");
使用增重(尽管对于小 windows 尺寸这似乎无法保持 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");
我刚开始使用 MigLayout。
我已经阅读了一些文档,包括 MigLayout 的快速入门指南,还搜索了一些 SO 问题,但没有找到答案。我敢肯定这很明显,但就像我说的,这是我第一次使用这个布局管理器。
我正在尝试使我的 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);
}
看起来中间一排的尺寸确实正确,但底排错了。我该如何解决这个问题?
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");
使用增重(尽管对于小 windows 尺寸这似乎无法保持 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");