2013-06-04 41 views
1

嗯,这可能是一个小问题,但我无法想象它。
我希望我的程序在按下Enter键时显示当前光标位置的文本。
这里是我当前的代码:获取输入密钥JTextArea当前行文本

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()); 
    } 
} 

它仅适用于我第一次按下回车键,下一次我按下它时,它抛出一个异常“无效的位置”。
任何更好的方法来做到这一点?

+0

按Enter键行为作为提交操作,并且脱字符号消失 - 这就是为什么你得到无效操作。第二次按Enter键时,TextArea中没有插入符号。 –

+0

嗯,那么你有什么建议我来解决这个问题? –

+0

您可能会保存最后一个已知的插入位置并返回该位置。或者在Enter之后(它触发一个可以在ActionListener中处理的Action),您可以将插入符号设置为原始位置。 –

回答

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()); 
    } 
} 

也许是有用的另一个家伙在那里:)