【发布时间】:2013-05-31 01:37:21
【问题描述】:
嗯,这也许是个小问题,但我想不通。
当我按下 Enter 键时,我希望我的程序在当前光标位置显示文本。
这是我当前的代码:
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());
}
}
它只在我第一次按 Enter 键时起作用,下次按它时,它会抛出异常“Invalid Location”。
有更好的方法吗?
【问题讨论】:
-
按回车键作为提交操作,插入符号消失 - 这就是您收到 Invalid Operation 的原因。当您第二次按 Enter 时,TextArea 中没有插入符号。
-
嗯,那你建议我怎么解决这个问题?
-
您可以保存最后一个已知的插入符号位置并将其返回。或者在 Enter 之后(触发可以在 ActionListener 中处理的 Action),您以编程方式将插入符号设置为其原始位置。
-
你能提供一个例子@JakubZaverka 吗?我对这个感到困惑..
标签: java swing document jtextarea caret