prosseek
prosseek

Reputation: 191199

Processing backspace in Java Swing

I have Java Swing code that process user's input as follows:

public class UserEntryPane extends JPanel implements DocumentListener {

…

@Override
public void insertUpdate(DocumentEvent e) {
    try {
        String c = a.getText(...);
        if (c.equals("\n")) {
            System.out.println(...);
            ...
        } 
        else {
            ...
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

The issue is that this method is not invoked when Backspace is pressed. How can I detect user's Backspace to process it correctly?

Upvotes: 0

Views: 1366

Answers (2)

import java.awt.FlowLayout;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class UseBackSPace extends JFrame
{
    Robot r;

    void start()
    {
        try
        {
            JFrame f = new JFrame("UseBackSPace");
            JTextField txt = new JTextField(20);
            f.add(txt);
            f.setSize(500, 200);
            f.setVisible(true);
            f.setLayout(new FlowLayout());
            f.setDefaultCloseOperation(EXIT_ON_CLOSE);
            // f.setLocation(400, 400);

            r = new Robot();
            r.setAutoDelay(900);

            r.keyPress(KeyEvent.VK_T);
            r.keyPress(KeyEvent.VK_H);
            r.keyPress(KeyEvent.VK_I);
            r.keyPress(KeyEvent.VK_S);
            r.keyPress(KeyEvent.VK_SPACE);
            r.keyPress(KeyEvent.VK_I);
            r.keyPress(KeyEvent.VK_S);
            r.keyPress(KeyEvent.VK_SPACE);
            r.keyPress(KeyEvent.VK_F);
            r.keyPress(KeyEvent.VK_U);
            r.keyPress(KeyEvent.VK_N);
            r.keyPress(KeyEvent.VK_BACK_SPACE);

        } catch (Exception e)
        {

        }
    }

    public static void main(String args[])
    {
        new UseBackSPace().start();

    }
}

Upvotes: 0

alex2410
alex2410

Reputation: 10994

Seems you use DocumentListener.

Look at method removeUpdate. It called, when you use backspace.

    @Override
    public void removeUpdate(DocumentEvent arg0) {
    }

Upvotes: 2

Related Questions