A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wst423 中级黑马   /  2015-11-17 00:06  /  645 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天我在学习GUI界面的时候模拟了老师写的一个程序 发现一个问题 希望各位帮忙解惑  代码如下:

import java.awt.*;
import java.awt.event.*;

class ButtonTool1
{
        ButtonTool1()
        {

                abcde();

        }
        public void abcde()
        {
                Frame f = new Frame("new Frame");
                f.setBounds(300,200,500,300);
                f.setLayout(new FlowLayout());


                TextField t = new TextField(20);
       
                f.add(t);
                inputEventDemo1(t);
                f.setVisible(true);       
        }

        public void inputEventDemo1(TextField t)
        {
                t.addKeyListener(new KeyAdapter()
                {
                        public void keyPressed(KeyEvent e)
                        {
                                int i = e.getKeyCode();
                                if(i<=KeyEvent.VK_0 && i>=KeyEvent.VK_9)
                                {
                                        System.out.println(i+"不是数字");
                                        e.consume();
                                }
                        }
                });

        }
       
}

class ButtonDemo1
{
        public static void main(String ages[])
        {
                new ButtonTool1();
        }
       
}
我希望的是程序运行后我在TextField框中能把键盘上除了0-9以外的数字剔除并禁止其写入,但结果却是所有字符都能写入

3 个回复

倒序浏览
如果是用老师的方法 把  if(i<=KeyEvent.VK_0 && i>=KeyEvent.VK_9)   改成if(!(i>=KeyEvent.VK_0 && i<=KeyEvent.VK_9)) 程序是OK的
回复 使用道具 举报
if(i>=KeyEvent.VK_0 && i<=KeyEvent.VK_9) 这样比较符合逻辑,这是我个人见解
你这个只能输入键盘的左边数字,右边还有一个
if((i>=KeyEvent.VK_0 && i<=KeyEvent.VK_9) || (i>=KeyEvent.VK_NUMPAD0 && i<=KeyEvent.VK_NUMPAD9))
改成这样就好了
回复 使用道具 举报
黑夜中那颗星 发表于 2015-11-17 12:13
if(i>=KeyEvent.VK_0 && i=KeyEvent.VK_0 && i=KeyEvent.VK_NUMPAD0 && i

怪不得我用右边那块键盘的时候会显示97不是数字
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马