我想创建 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);}}
但这不是我想要的,因为用户不能再按 ctrl-c ctrl-v ctrl-x...所以我添加了
&& ev.getKeyCode() != 17 && ev.getKeyCode() !=67 && ev.getKeyCode() != 86 && ev.getKeyCode() !=0 &&
到 if 条件,但现在用户可以粘贴不适当的输入,即“(”或“<”,没有任何问题...... 我能做什么?
最佳答案
也许使用DocumentFilter会更好与 Pattern ,
关于java - JTextField 仅将输入限制为某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7658324/