将JTextField输入限制为整数

将JTextField输入限制为整数

我知道这个问题已经问过无数次了,但我还是找不到一个简单的解决办法。我有一个JTextField,它只接受正整数作为输入。我需要一种方法来确保这里没有其他的输入。

我已经有一个keyListener附加到这个控件。删除此侦听器要处理的其他代码,我有以下内容:

       txtAnswer.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {

            int key = e.getKeyCode();

            /* Restrict input to only integers */
            if (key < 96 && key > 105) e.setKeyChar('');
        };
    });

如您所见,我正在尝试使用键码来检查刚才按下的键是否在整数范围内。这似乎很管用。但我想做的是,如果条目超出了这个范围,就忽略它。密码e.setKeyChar('')本来是用来处理这事的,但不起作用。代码将编译,但没有可见的效果。

有人能告诉我是否在正确的轨道上吗?我能替换什么e.setKeyChar('')让这件事成功吗?还是我完全走错了方向?

谢谢。


ITMISS
浏览 1031回答 3
3回答

胡说叔叔

您也可以使用JFormattedTextField,使用起来要简单得多。例子:public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;NumberFormat&nbsp;format&nbsp;=&nbsp;NumberFormat.getInstance(); &nbsp;&nbsp;&nbsp;&nbsp;NumberFormatter&nbsp;formatter&nbsp;=&nbsp;new&nbsp;NumberFormatter(format); &nbsp;&nbsp;&nbsp;&nbsp;formatter.setValueClass(Integer.class); &nbsp;&nbsp;&nbsp;&nbsp;formatter.setMinimum(0); &nbsp;&nbsp;&nbsp;&nbsp;formatter.setMaximum(Integer.MAX_VALUE); &nbsp;&nbsp;&nbsp;&nbsp;formatter.setAllowsInvalid(false); &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;If&nbsp;you&nbsp;want&nbsp;the&nbsp;value&nbsp;to&nbsp;be&nbsp;committed&nbsp;on&nbsp;each&nbsp;keystroke&nbsp;instead&nbsp;of&nbsp;focus&nbsp;lost &nbsp;&nbsp;&nbsp;&nbsp;formatter.setCommitsOnValidEdit(true); &nbsp;&nbsp;&nbsp;&nbsp;JFormattedTextField&nbsp;field&nbsp;=&nbsp;new&nbsp;JFormattedTextField(formatter); &nbsp;&nbsp;&nbsp;&nbsp;JOptionPane.showMessageDialog(null,&nbsp;field); &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;getValue()&nbsp;always&nbsp;returns&nbsp;something&nbsp;valid &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(field.getValue());}
打开App,查看更多内容
随时随地看视频慕课网APP