gpt4 book ai didi

java - MigLayout 换行两行

转载 作者:行者123 更新时间:2023-12-01 09:17:16 26 4
gpt4 key购买 nike

我刚刚开始使用 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);
}

产生:

enter image description here

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

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);
}

enter image description here

看起来中间行的尺寸确实是正确的,但底行被移位了。我该如何解决这个问题?

最佳答案

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");

关于java - MigLayout 换行两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40453184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com