Java 在swing中,布局具有不同高度的构件

Java 在swing中,布局具有不同高度的构件,java,swing,layout,miglayout,Java,Swing,Layout,Miglayout,我们有不同高度的组件,我们希望以垂直方向尽可能少的空间(如图所示)的方式显示它们,我们如何使用miglayout做到这一点 我已经使用了很多MigLayout,我不确定是否有真正好的方法来实现这一点。您真正想要的是有5列,并在y轴上使用split,但不幸的是,您不能这样做 我认为有三种方法: 1) 使用5个JPanel,每列一个,每列只需使用flowy-in-MigLayout 2) 设置一个矩阵,并将每个组件分配给多个单元 p.add(component1, "cell 0 0 1 1");

我们有不同高度的组件,我们希望以垂直方向尽可能少的空间(如图所示)的方式显示它们,我们如何使用miglayout做到这一点


我已经使用了很多MigLayout,我不确定是否有真正好的方法来实现这一点。您真正想要的是有5列,并在y轴上使用split,但不幸的是,您不能这样做

我认为有三种方法:

1) 使用5个JPanel,每列一个,每列只需使用flowy-in-MigLayout

2) 设置一个矩阵,并将每个组件分配给多个单元

p.add(component1, "cell 0 0 1 1");
p.add(component2, "cell 1 0 1 2");
等等。。如果在每一列中没有很多不同的端点,那么这种方法非常有效

“span”在这里可能更干净一些:

p.add(component1, "spany 1");
p.add(component2, "spany 2");
p.add(component3, "spany 1");
p.add(component4, "spany 3");
p.add(component5, "spany 1, wrap");

3) 使用“nogrid”并在每个组件上设置大小界限

我已经使用了很多MigLayout,我不确定是否有真正好的方法来实现这一点。您真正想要的是有5列,并在y轴上使用split,但不幸的是,您不能这样做

我认为有三种方法:

1) 使用5个JPanel,每列一个,每列只需使用flowy-in-MigLayout

2) 设置一个矩阵,并将每个组件分配给多个单元

p.add(component1, "cell 0 0 1 1");
p.add(component2, "cell 1 0 1 2");
等等。。如果在每一列中没有很多不同的端点,那么这种方法非常有效

“span”在这里可能更干净一些:

p.add(component1, "spany 1");
p.add(component2, "spany 2");
p.add(component3, "spany 1");
p.add(component4, "spany 3");
p.add(component5, "spany 1, wrap");

3) 使用“nogrid”,只需在包装到JScrollPane?中的每个组件上设置大小界限,或者组件的尺寸取决于JPanel中的可用/可用空间?是的,它被放置在JScrollPane中并不表示miglayout有任何问题,但为什么解决方案必须使用miglayout?@engin,我建议您阅读更多关于您可以编写自己的布局管理器的内容,这是@Moonbeam建议的链接下的主题之一。乍一看,BoxLayout也可以工作。它被包装到JScrollPane?中,或者组件的尺寸取决于JPanel中的可用/可用空间?是的,它被放置在JScrollPane中,这并不是说miglayout有什么问题,但为什么解决方案必须使用miglayout?@engin,我建议您阅读更多关于您可以编写自己的布局管理器的内容,这是@Moonbeam建议的链接下的主题之一。乍一看,BoxLayout也可以工作。thx我会使用它,我们也可以做p.add(component1,“wrap”);我想我会使用它,我们也可以做p.add(component1,“wrap”);我猜