Java 是否可以将键入的字符撤消到JText区域?

Java 是否可以将键入的字符撤消到JText区域?,java,swing,events,Java,Swing,Events,在JavaSwing中是否可以删除键入JTextArea的字符?或者阻止添加某些字符?我不是说替换,我特别想删除/阻止由关键事件添加的角色。下面是一些示例代码来说明我想做什么: input.addKeyListener(new KeyListener(){ @Override public void keyTyped(KeyEvent e){ //Nothing to do here } @O

在JavaSwing中是否可以删除键入JTextArea的字符?或者阻止添加某些字符?我不是说替换,我特别想删除/阻止由关键事件添加的角色。下面是一些示例代码来说明我想做什么:

      input.addKeyListener(new KeyListener(){

        @Override
        public void keyTyped(KeyEvent e){
            //Nothing to do here
        }

        @Override
        public void keyPressed(KeyEvent e){
            if(condition == true){
            e.undo();
            //I want to remove the key that character that was inserted with this action
            }
        }

        @Override
        public void keyReleased(KeyEvent e){
            //Nothing to do here
        }

    });

提前谢谢

您可以将文本字段的内容存储在按键方法的末尾。 如果随后遇到不需要的键,可以将textfield的内容设置为存储值并返回

private String oldValue;

@Override
    public void keyPressed(KeyEvent e){
        if(condition == true){
            setText(oldValue);
            return;
        }
        oldvalue = getText();//Replace getText() with correct getter for current value
    }

@如果输入的字符等于Key code call keyevent.consume(),则必须找到不希望在该文本区域中输入的字符,并获取该字符的密钥代码;这是一个非常好的主意!谢谢大家!<代码>这是一个非常好的主意-不是真的。键侦听器与AWT一起使用。然而,当使用Swing时,您可以访问更新更好的API。相反,您应该使用
文档过滤器
。有关更多信息和示例,请阅读上Swing教程的部分。