利用键盘监听事件监听器控制键盘只能输入数字

WaterCham 2014-04-27 07:34:50
这个是我写的一部分代码
textField.addKeyListener(new MyKey());


	private class MyKey implements KeyListener {

int length = 0;

int keyCode = 0;

private final int VK_0 = KeyEvent.VK_0;// 常量值为48

private final int VK_9 = KeyEvent.VK_9;// 常量值为57

private final int VK_NUMPAD0 = KeyEvent.VK_NUMPAD0;// 常量值为96

private final int VK_NUMPAD9 = KeyEvent.VK_NUMPAD9;// 常量值为105

public void keyPressed(KeyEvent e) {//按下某个键时调用此方法。
//添加代码
keyCode = e.getKeyCode();
if((keyCode >= KeyEvent.VK_0 && keyCode <= KeyEvent.VK_9) || (keyCode >= KeyEvent.VK_NUMPAD0 && keyCode <= KeyEvent.VK_NUMPAD9) || keyCode ==8){

}
else
e.consume();
}

按道理我的if()里已经限定了如果不是输入数字,文本框就无法显示。但我编译的时候,按其他键,文本框上依然能显示我敲的字符,为什么?
...全文
300 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
suciver 2014-04-30
  • 打赏
  • 举报
回复
利用JTextField的Document文档模型, 重写它的insertString方法就可以了

public class OnlyDigitDocument extends javax.swing.text.PlainDocument{
        public void insertString(int offs, String str, AttributeSet a) 
             throws BadLocationException {
 
             if (str == null) {
                 return;
             }
             if(str.matches("\\d+")){//是数字的
                super.insertString(offs, str, a);
             }
         }
}
//你的textField对象设置他的文档关联
textField.setDocument(new OnlyDigitDocument());
wozuiqiangdeaoyi 2014-04-27
  • 打赏
  • 举报
回复
你的if体里什么都没有啊
alan19931103 2014-04-27
  • 打赏
  • 举报
回复
没太懂,你的if里面是要用&&嘛?
WaterCham 2014-04-27
  • 打赏
  • 举报
回复
竟然没人

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧