【发布时间】:2011-10-05 08:00:01
【问题描述】:
我想创建 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条件,但现在用户可以粘贴不适当的输入,即'('或'
【问题讨论】:
-
实际上,很少需要处理关键事件。如果它看起来像需要它,那么如果出错的可能性很高:-) @mKorbel 有答案 - DocumentFilter
标签: java swing validation jtextfield keyevent