java - MigLayout:垂直跨越组件旁边的意外布局

标签 java swing miglayout

一边玩一边演示如何轻松实现一个layout requirment使用 MigLayout,我对以下结果感到惊讶:

MigLayout layout = new MigLayout("wrap 3, debug");
JComponent content = new JPanel(layout);

content.add(new JLabel("First:"));
content.add(new JScrollPane(new JTextArea(10, 20)), "skip, spany");
content.add(new JLabel("Second"));
content.add(new JTextField(10));
content.add(new JLabel("third"));
content.add(new JTextField(10));
//content.add(new JLabel());

布局思路很简单:

  • 三列
  • 最后一列横跨所有行
  • 前两列是一堆标签/组件对

出乎意料的是,前两列的最后一行占据了所有可用的垂直空间,这导致将最后一对定位在其中间(顶部对齐不是一个选项,因为它们必须彼此基线对齐)

enter image description here

取消注释上面的最后一行(添加一个几乎不可见的虚拟对象)显示了预期的布局,但是不应该进入生产代码的 hack

enter image description here

问题是:如何在不破解的情况下实现预期的布局?

最佳答案

might be a bug :

一种不太复杂的变通方法(如果在创建表单时已知行数则适用)是显式定义行约束

MigLayout layout = new MigLayout("wrap 3, debug", "", "[][][][]");

即在跨越组件一侧的组件比实际需要多定义一行

关于java - MigLayout:垂直跨越组件旁边的意外布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11702050/

相关文章:

java控制台输出成为下一个控制台输入

java - 原木锻造强化修复

java - 如何使用antlr4访客

java - 在层次结构中设置类路径其他目录

java - 如何设置刚性区域的颜色

java - 如何通过Java swing执行cmd命令

java - 调整组件大小以适应行

java - 从内部类引用

java - Mig 布局不遵循单元格约束

Java JLabel 多行高度