如何将 JTextArea 行数的值转换为 Dimension height_JAVA

How to convert the value of JTextArea line count to Dimension height_JAVA

我正在尝试根据 JTextArea 中 getLineCount 函数的返回值在 ScrollPane 中设置高度。 当我在 ScrollPane 的维度中将值设置为高度时,它真的很小。我添加了 *20 以获得最接近我预期的结果。 然而,通过这个技巧,getLineCount 的数字越大,它变得越不准确,这意味着 JScrollPane 的高度变得比我希望的要大。

我需要一个公式来转换它们之间的指标。但是我不知道它们是什么指标 returning/using 除了它们是 int 值。

如果有一个内置的库来转换这两者,它也可能会有用。 关于这个问题的在线帖子似乎并不多。有人遇到过这个问题吗?

int height= textArea.getLineCount(); 
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setPreferredSize(new Dimension(1, height* 20));

您这样做的方式是将高度值设置为好像每行的高度都是 1 个像素。

将您的行号乘以 Graphics.getFontMetrics().getHeight(),您在图形上设置了字体。它应该可以解决您的问题

这是什么意思?如果您尝试将滚动窗格的大小调整为文本区域的大小,则不需要滚动窗格。

不要试图管理尺寸。不要尝试使用 setPreferredSize() 方法。

相反,您可以使用 JTextAreasetRows(...) 方法定义要在文本区域中显示的行数而无需滚动。

这将允许文本区域根据文本区域的行和字体确定其首选大小。滚动窗格的大小将自动调整为文本区域的首选大小。

如果添加更多行数据,则会出现滚动条。