I'm looking for a method that computes the line number of a given text position in a JTextPane with wrapping enabled.
Example:
This a very very very very very very very very very very very very very very very very very very very very very very long line.
This is another very very very very very very very very very very very very very very very very very very very very very very long line.|
The cursor is on line number four, not two.
Can someone provide me with the implementation of the method:
int getLineNumber(JTextPane pane, int pos)
{
return ???
}
Try this
/**
* Return an int containing the wrapped line index at the given position
* @param component JTextPane
* @param int pos
* @return int
*/
public int getLineNumber(JTextPane component, int pos)
{
int posLine;
int y = 0;
try
{
Rectangle caretCoords = component.modelToView(pos);
y = (int) caretCoords.getY();
}
catch (BadLocationException ex)
{
}
int lineHeight = component.getFontMetrics(component.getFont()).getHeight();
posLine = (y / lineHeight) + 1;
return posLine;
}
http://java-sl.com/tip_row_column.html An alternative which works with text fragments formatted with different styles
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With