3

是否有一种可靠的方法来计算字符串在 JTextArea 中如何划分为行?

我有一个固定宽度的 JTextArea,当它被填充时,会添加一个新行并垂直扩展。

现在,我需要确切地知道哪些字符在哪一行。我可以使用字体度量将单个字符宽度相加,但我不知道这是否可靠,或者是否有更好的方法。

字体度量是“诡计”的唯一方法吗?

4

2 回答 2

6

所有JTextComponent都有modelToView(...)viewToModel(...)可以提供帮助的方法,但可能更好的是javax.swing.text.Utilities类中的方法,包括getRowStart(...)getRowEnd(...)

于 2012-10-29T22:25:21.737 回答
1

modelToView 可能对 OP 没有帮助,因为它从像素坐标开始。getRowStart 只是间接有用,因为它从偏移量而不是行索引开始,并返回一个偏移量。这里最有用的函数是 JTextArea.getLineStartOffset(lineNumber),它返回特定行开头的偏移量,反之,JTextArea.getLineOfOffset(offset)。(希望当我今天早些时候偶然发现此页面时遇到类似问题时,这个答案就在这里:-))

于 2012-11-20T11:05:11.063 回答