是否有一种可靠的方法来计算字符串在 JTextArea 中如何划分为行?
我有一个固定宽度的 JTextArea,当它被填充时,会添加一个新行并垂直扩展。
现在,我需要确切地知道哪些字符在哪一行。我可以使用字体度量将单个字符宽度相加,但我不知道这是否可靠,或者是否有更好的方法。
字体度量是“诡计”的唯一方法吗?
所有JTextComponent都有modelToView(...)
和viewToModel(...)
可以提供帮助的方法,但可能更好的是javax.swing.text.Utilities类中的方法,包括getRowStart(...)
和getRowEnd(...)
modelToView 可能对 OP 没有帮助,因为它从像素坐标开始。getRowStart 只是间接有用,因为它从偏移量而不是行索引开始,并返回一个偏移量。这里最有用的函数是 JTextArea.getLineStartOffset(lineNumber),它返回特定行开头的偏移量,反之,JTextArea.getLineOfOffset(offset)。(希望当我今天早些时候偶然发现此页面时遇到类似问题时,这个答案就在这里:-))