A-SM
A-SM

Reputation: 884

Get JTextArea current row text on Enter Key

Well, this is a small problem maybe, but I couldn't figure it.
I want my program display the text in current cursor position when I press the Enter key.
Here's my current code:

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

It works only for the first time I press the Enter key, the next time I press it, it throws an exception "Invalid Location".
Any better way to do this?

Upvotes: 3

Views: 2111

Answers (1)

A-SM
A-SM

Reputation: 884

Hhehe, solved it by myself:

Here's the correct code for what I'm looking for:

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

Maybe it's useful to another guy out there :)

Upvotes: 8

Related Questions