java - 具有可扩展单元格的动态布局

标签 java forms swing textarea

我真的被必须用 java swing 制作的布局困住了。

我必须构建一个动态表单,同时遍历标签和输入组件的 vector 。

它应该是这样的:

enter image description here

在此图像中,您可以看到结果应该是什么。绿线之间是一对标签/输入组件。如果我必须将它们排成一排 50/50 或排成两排,或者排成一排 25/75 或 75/25,我也会得到一个约束,告诉我。此外,整个表格必须可以调整大小,50/50、25/75 和 75/25 的比例仍然正确。

我尝试了 GridBagLayout 效果很好,但是正如您在图片的第一行中看到的那样,标签可能很长。所以我使用了 JTextarea 但 GridBagLayout 将其切断。我还使用了 JGoodies FormLayout,但在使用长标签的 Textarea 时也遇到了麻烦。

25/75 和 75/25 的比例并不是那么重要,但实际上它也是我必须要做的一部分。

我认为让 Textarea 扩展其父组件真的很难。

我还读/写了这些文章:

但我还是卡住了。

你们中有人知道如何实现这一点吗?

谢谢

最佳答案

我已经有一段时间没有做很多 Swing 了,但有两个想法:

  1. 如果控件被截断,这听起来像是您没有设置最小尺寸。

  2. 我不认为任何现成的布局管理器都具有维持像 25/75 拆分这样的大小比例的功能。但不要绝望!您可以编写自己的布局管理器。当我做很多 Swinging 时,我写了几个布局管理器。 (我会说,“针对专门的需求”,但实际上它们是针对相当普遍的需求,Java 没有包含固定的布局管理器来处理这些事情,这总是让我感到惊讶。比如:你经常想要一行或一列按钮所有按钮的大小都相同,因此您必须找到哪个按钮的文本最长,然后调整所有其他按钮的大小以匹配它。或者:设置行和列,其中每个列的大小都设置为该列中最宽的东西,但一列的宽度对其他列没有影响;然后对行也类似。)无论如何,你所描述的是相当不寻常的,所以你可能只想编写自己的布局管理器。

编写布局管理器的诀窍就是实现几个关键功能:(a) 在给定整体尺寸的情况下计算放置每个控件的 X 和 Y 坐标; (b) 计算所需的最小尺寸; (c) 计算首选尺寸; (d) 计算您将使用的最大尺寸。嗯,可能还有一两个我忘记了,但这没什么大不了的。当我第一次想到“编写自己的布局管理器”时,一开始听起来像是“编写自己的数据库引擎”或“编写自己的编译器”,但实际上并没有那么可怕。通常只有几百行代码。

当然,如果这里的其他人可以告诉您如何使用其中一种固定布局管理器来完成您想做的事情,那肯定会容易得多。

关于java - 具有可扩展单元格的动态布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7065671/

相关文章:

java - 确定应用程序的使用次数 - Android

Java通过类型转换访问成员

javascript - 如何从表单组件获取状态/值?

php - 需要我的 HTML 搜索表单来搜索在搜索表单上选择的选项,然后显示我的结果?

java - JTable 设置列宽不起作用

java - Android 屏幕上精确坐标处的图标

java - 在 iReport 中使用 SVG 文件会出现 JRExpressionEvalException : Error evaluating expression : Source Text

html - 如何设计带有输入和文本区域的 Bootstrap 表单?

java.awt.container.add(comp) 瓶颈

java - JTextArea默认值?