Reputation: 3
When I am trying to get text from JTextArea
and print it, it is printing the string after the next key is pressed I want to print it when I press the key.
The code is given below:
textArea_1.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
x=textArea_1.getText().toString();
System.out.println(x);
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
});
For example First I pressed 's' key then I pressed 'a' key The output after pressing 'a' key is s The output after pressing 's' key is null But I want s just after i pressed 's' key
Upvotes: 0
Views: 103
Reputation: 9192
As already mentioned in comments, you can use a DocumentListener, for example:
javax.swing.event.DocumentListener myDocumentListener = new javax.swing.event.DocumentListener() {
@Override
public void changedUpdate(javax.swing.event.DocumentEvent documentEvent) {
output(documentEvent);
}
@Override
public void insertUpdate(javax.swing.event.DocumentEvent documentEvent) {
output(documentEvent);
}
@Override
public void removeUpdate(javax.swing.event.DocumentEvent documentEvent) {
output(documentEvent);
}
private void output(javax.swing.event.DocumentEvent documentEvent) {
Document source = documentEvent.getDocument();
int length = source.getLength();
try {
System.out.println(source.getText(0, length));
}
catch (javax.swing.text.BadLocationException ex) {
System.err.println("Invalid Index Supplied!");
}
}
};
jTextArea1.getDocument().addDocumentListener(myDocumentListener);
Upvotes: 3