代码之家  ›  专栏  ›  技术社区  ›  Glenn Nelson

Jeditorpane是最后一行

  •  0
  • Glenn Nelson  · 技术社区  · 14 年前

    使用jeditorpane,是否有任何方法来判断插入符号是否在最后一行?我在API中找不到任何东西,更重要的是,jtextcomponent派生了jeditorpane。当用户使用向下箭头键向下移动文本时,我需要找出这个问题。我现在的想法是:

    private boolean isEndOfText() {
      int tmpCurrent = editor.getCaretPosition();
    
      editor.getActionMap().get(DefaultEditorKit.endLineAction).actionPerformed(null);
      int tmpEnd = editor.getCaretPosition();
      try { editor.setCaretPosition(tmpEnd + 1); } catch (Exception e) { editor.setCaretPosition(tmpCurrent); return true; }
      editor.setCaretPosition(tmpCurrent);
      return false;
    }
    

    每当按下向下键时,此代码都会运行,并返回它是否实际上是文本的结尾,方法是检测如果插入符号放在最后一个可能的位置之后(如果它实际上是最后一行)是否发生错误,否则它意味着未到达文本结尾。

    2 回复  |  直到 13 年前
        1
  •  2
  •   camickr    14 年前

    你应该能够使用 Text Utilities . 一个方法返回总行数,另一个方法返回插入符号处的行数。

    自从我不喜欢Jeditorpane的HTML支持以来,我从来没有玩过这么多。您还可以使用editor.getdocument().getLength()来确定插入符号是否在文档的末尾。这将与只显示文本而不是HTML的JTextArea或JTextPane一起使用。不知道它是如何在犹太人中起作用的。

        2
  •  1
  •   lins314159    14 年前

    也许有更好的方法,但你可以尝试一下:

    return editor.getText().indexOf("\n", editor.getCaretPosition()) == -1;