gpt4 book ai didi

java - 需要帮助理解一些行约束行为

转载 作者:行者123 更新时间:2023-12-01 15:20:28 24 4
gpt4 key购买 nike

在我正在开发的一个 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 行高度。

我是否误解了行约束的工作原理,或者这里还有其他我完全看不到/理解的东西在起作用?

最佳答案

在这两种情况下,您仅使用一个布局行(即由 MigLayout 管理的行),在其中放置 JLabel (第一列)和 JScrollPanel (包含 JTextArea,第二列)。

只需将“debug”添加到布局约束中,您就可以轻松可视化 MigLayout 行和列结构:

String layoutConstraints = "fill,debug";

并启动应用程序。我强烈建议您在处理布局时使用此设置。

您为 JTextArea 设置的

Rows 属性与布局行无关。此属性仅告诉 JTextArea 组件它将尝试具有什么大小,如 javadocs 中所定义。 :

java.awt.TextArea has two properties rows and columns that are used to determine the preferred size. JTextArea uses these properties to indicate the preferred size of the viewport when placed inside a JScrollPane (...)

但是 JTextArea 行无论如何都不会与容器(在您的情况下为 JPanel)布局中的行相对应。

请更仔细地了解(并进行实验!)JTextArea row 属性的确切含义。

关于java - 需要帮助理解一些行约束行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10996817/

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