在我正在处理的一个 Java 项目中,我的约束最初设置为:
JPanel panel = new JPanel();
String layoutConstraints = "fill";
String columnConstraints = "[right]rel[grow]";
String rowConstraints = "[]10[]";
panel.setLayout(new MigLayout(layoutConstraints, columnConstraints, rowConstraints));
根据我对文档的了解,对于超出规范的每一行,都会重复最后一个间隙和约束。(参见“如果格式字符串中的行数少于该维度中网格单元格中的行数,则最后一个间隙和行约束将用于额外的行。”)
所以据我所知,这应该意味着行约束实际上是[]10[]10[]10[]
等等。
当我在 JScrollPane 中有一个 JTextArea 并且行设置为 3 时,我的问题就来了:
JLabel label = new JLabel("Text area");
JTextArea text = new JTextArea("Test", 3, 40);
JScrollPane scroll = new JScrollPane(text);
panel.add(label);
panel.add(scroll, "grow,wrap");
当与[]10[]
仅 1 行高的行约束一起使用时,但当我更改时
String rowConstraints = "[]10[]";
至
String rowConstraints = "[]";
它突然使用了我为 JTextArea 指定的完整的 3 行高度。
我是否误解了行约束是如何工作的,或者这里还有其他我完全看不到/理解的东西?