Is there a reliable way to calculate how is a string divided into rows in JTextArea?
I have a JTextArea with fixed width and when it gets filled, a new row is added and it expands vertically.
Now, I need to know exactly which characters are in which row. I could add up single character widths using font metrics, but I don't know if that is reliable, or if there may be a better method.
Is the font metrics "trick" the only way?
All JTextComponents have modelToView(...)
and viewToModel(...)
methods that can help, but perhaps even better are the methods in the javax.swing.text.Utilities class including getRowStart(...)
and getRowEnd(...)
modelToView probably doesn't help the OP, because it starts from pixel coordinates. getRowStart is only indirectly useful, because it starts from offset, not row index, and returns an offset. The function that would be most useful here is JTextArea.getLineStartOffset(lineNumber), which returns the offset-from-start-of-text of the beginning of a particular line, and the reverse, JTextArea.getLineOfOffset(offset).
(Wish this answer had been here when I stumbled on this page with a similar problem earlier today :-) )