JTextField仅限于某些字符的输入

Una*_*oad 5 java validation swing keyevent jtextfield

我想创建JTextField,其输入字符仅限于"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYWZZ0123456789 +&## /%?= ~_- |!:,.;" 所以我试着压倒一切

public class CustomJTextField extends JTextField {  
String goodchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYWZZ0123456789+&@#/%?=~_-|!:,.;";

//... my class body ...//

@Override
public void processKeyEvent(KeyEvent ev) {
    if(c != '\b' && goodchars.indexOf(c) == -1 ) {
        ev.consume();
        return;
    }
    else 
        super.processKeyEvent(ev);}}
Run Code Online (Sandbox Code Playgroud)

但它不是我想要的,因为用户不能再按ctrl-c ctrl -v ctrl-x ...所以我加入了

&& ev.getKeyCode() != 17 && ev.getKeyCode() !=67 && ev.getKeyCode() != 86 && ev.getKeyCode() !=0 &&
Run Code Online (Sandbox Code Playgroud)

到if条件,但现在用户可以粘贴不适当的输入,即'('或'<',没有任何问题......我该怎么办?

mKo*_*bel 7

也许更好的是使用DocumentFilter with Pattern,