javaswing中的退格处理

javaswing中的退格处理,java,swing,backspace,Java,Swing,Backspace,我有如下处理用户输入的Java Swing代码: public class UserEntryPane extends JPanel implements DocumentListener { … @Override public void insertUpdate(DocumentEvent e) { try { String c = a.getText(...); if (c.equals("\n")) { System.o

我有如下处理用户输入的Java Swing代码:

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

问题是当按下Backspace时不会调用此方法。如何检测用户的退格以正确处理它?

似乎您使用了
DocumentListener

看看这个方法。当您使用退格时,它会调用

    @Override
    public void removeUpdate(DocumentEvent arg0) {
    }

那是秋千吗?看起来像是标准的命令行java,你可以不设置一个键侦听器并监听backspace键吗?我认为退格键的字符代码是8。@BenjaminDale这不是正确的方法!他必须使用DocumentListener或DocumentFilter。是的,我刚看到你的答案。对我来说似乎是合理的:D
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();

    }
}