返回给定JTextPane位置的行号的方法?

时间:2008-09-19 14:17:23

标签: java user-interface swing jtextpane

我正在寻找一种方法来计算JTextPane中给定文本位置的行号并启用换行。

示例:

  

这是一个非常非常非常非常非常非常非常非常非常非常非常非常非常长的路线。
  这是另一个非常非常非常非常非常非常非常非常非常非常非常非常长的路线。 |

光标位于第四行,而不是两行。

有人可以向我提供该方法的实施:

int getLineNumber(JTextPane pane, int pos)
{
     return ???
}

3 个答案:

答案 0 :(得分:6)

http://java-sl.com/tip_row_column.html 一种替代方法,适用于使用不同样式格式化的文本片段

答案 1 :(得分:5)

试试这个

 /**
   * 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;
  }

答案 2 :(得分:1)

你可以试试这个:

wsgi.py

请记住,行号始终从0开始。