1

所有组件宽度都相同。我有一个 JPanel(框布局;PAGE_AXIS)。我在上面添加了一个 Box.filler,它具有以下规格:

最小尺寸(高度)-1

首选尺寸(高度) JPanel 高度

最大尺寸(高度) JPanel 高度

我添加了边框厚度为 7 像素的 JTextArea(仅在下方)。

当我输入文本时,JTextArea 会扩展,但还不够,并且在几行之后,文本超出了界限(您再也看不到它了)。

我可以确定存在多少行文本(使用 FontMetrics),并且可以相应地强制 setSize,但没有真正改变。打印出 JTextArea.getHeight() 确实表明尺寸在我看来已经改变,但在视觉上它保持不变。而且我没有忘记验证和重绘。

如何强制 JTextArea 调整到特定大小?

4

2 回答 2

1

您也可以只让 JTextArea 换行?:

JTextArea.setWrapStyleWord(true);

setRows(int rows)您也可以尝试使用然后设置行数revalidate()repaint()

于 2012-08-27T13:05:53.197 回答
0

您可以将 JTextArea 放入 JScrollPane 以保持其他行可见,而无需更改 JTextArea 在屏幕上所需的空间。

有关如何使用滚动窗格的更多信息,请参阅 Oracle 教程。

于 2012-08-27T13:35:33.663 回答