zoukankan      html  css  js  c++  java
  • TextFiled怎样只能让其输入数字

      某烤白马问我怎样在一个Java窗体里面只能输入数字。这个问题我以前在做Web项目的时候碰到过,是采用的JS监听键盘的方式做的。但是在窗体里面怎么做,还没有做过。

      不知道很简单,百老师跟谷老师都是好老师。于是找了下。

      在CSDN上面看到有人有同样的问题,点此查看。看了下知道了原来可以采用PlainDocument接口的方式实现,但是我看了下代码,好像是输入之后再去做判断,如果不是汉字就去掉该字符。好像有点不符合需求。另外一个方式是采用监听器的方式。看了下,参照他的代码写了一段自己的代码。

    监听键盘事件代码
        private class NumListener implements KeyListener {
            
    public void keyPressed(KeyEvent e) {
                
    // TODO Auto-generated method stub

            }

            
    public void keyReleased(KeyEvent e) {
                
    // TODO Auto-generated method stub
                
            }

            
    public void keyTyped(KeyEvent e) {
                
                
    char code = e.getKeyChar();
                
                
    if (isNumber(code)){
                    
    return;
                } 
    else {
                    e.consume();
                }
            }


        }

    对比一下CSDN上那位兄弟的回答,我这里少了很多,不知道会不会有什么问题。说实话,我不明白他为什么要判断输入框的类型。而判断是否是数字的代码我觉得还可以采用正则表达式,也改造了一下。

    判断是否为数字
        private static Pattern NUM_PATTERN = Pattern.compile("\\d*");
            
    protected boolean isNumber(char code) {
    //            if ((code == '0') || (code == '1') || (code == '2')
    //                    || (code == '3') || (code == '4') || (code == '5')
    //                    || (code == '6') || (code == '7') || (code == '8')
    //                    || (code == '9')){
    //                return true;
    //            }
                Matcher matcher = NUM_PATTERN.matcher(String.valueOf(code));
                
    if (matcher.matches()){
                    
    return true;
                }

                
    return false;
            }

    代码还是需要完善,还有对于复制粘贴没有处理。

  • 相关阅读:
    MySQL
    docker-compose部署redis及RabbitMq
    docker-compose部署nacos单机版(简洁优化版)
    用U盘启动安装CentOS的详解
    mysql 获取id最大值
    JAVA编码-- 比较两个BigDecimal大小(重要)
    MYSQL如何把年月日3个int类型的字段拼接成日期类型,并按照日期段进行查询
    Mysql如何根据年月日来查询数据
    springboot 调用redisTemplate时总是为null的解决方法
    shell中read用法
  • 原文地址:https://www.cnblogs.com/docmao/p/1641419.html
Copyright © 2011-2022 走看看