在Enter Key上获取JTextArea当前行文本

时间:2013-06-04 15:18:36

标签: java swing document jtextarea caret

嗯,这可能是一个小问题,但我无法理解 当我按下回车键时,我希望我的程序在当前光标位置显示文本 这是我目前的代码:

if (evt.getKeyCode() == 10) {
  try {
    int offset=ta.getLineOfOffset(ta.getCaretPosition());
    int start=ta.getLineStartOffset(offset);
    int end=ta.getLineEndOffset(offset);

    System.out.println("ext: "+ta.getText(start, end));

  } catch (BadLocationException ex) {
    System.out.println(ex.getMessage());
  }
}  

它仅在我第一次按下回车键时起作用,下次按下它时,它会抛出异常“无效位置”。
有没有更好的方法呢?

1 个答案:

答案 0 :(得分:5)

Hhehe,自己解决了:

以下是我正在寻找的正确代码:

if (evt.getKeyCode() == 10) {
  try {
    int offset=ta.getLineOfOffset(ta.getCaretPosition());
    int start=ta.getLineStartOffset(offset);
    int end=ta.getLineEndOffset(offset);

    System.out.println("Text: "+ta.getText(start, (end-start)));                
  } catch (BadLocationException ex) {
    System.out.println(ex.getMessage());
  }
}

也许这对那里的另一个人有用:)