编程语言
首页 > 编程语言> > java – MigLayout:垂直生成组件旁边的意外布局

java – MigLayout:垂直生成组件旁边的意外布局

作者:互联网

虽然演示了如何使用MigLayout轻松实现layout requirment,但我对以下结果感到惊讶:

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

布局理念很简单:

>三列
>最后一列跨越所有行
>前两列一堆标签/组件对

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

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

问题是:如何在不进行黑客攻击的情况下实现预期的布局?

解决方法:

might be a bug

一种不太常见的解决方法(如果在表单创建时知道行数,则适用)是明确定义行约束

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

这比定义生成组件侧面的组件实际需要的行多一行

标签:java,swing,miglayout
来源: https://codeday.me/bug/20190626/1289325.html