当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《返回给定JTextPane位置的行号的方法?》经验,为你挑选了2个好方法。

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

例:

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

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

有人可以为我提供该方法的实现:

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

StanislavL.. 6

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



1> StanislavL..:

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



2> Richard..:

试试这个

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


jtextpane类能够支持可变字体大小,此方法将失败.
推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有