如何限制输入类型

时间:2012-09-06 10:24:19

标签: java swing jcombobox jtextfield

我正在学习java swing。有一个可编辑的JComboBox用于选择不同的水深,JTextField用于接受手机号码。我的问题是如何限制用户只输入这两个字段中的数字,以及如何限制字符输入的最大数量,例如移动电话号码不超过10?方法是否可用于这些要求,或者我需要自己定义它们? 在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

使用JFormattedTextField之类的内容:

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            JFrame frame = new JFrame("JFormattedTextField Example");
            MaskFormatter fmt = null;

            // A phone number 10 digits 
            try {
                fmt = new MaskFormatter("(###)-###-####");//brackets () are optional just there for my pref
                fmt.setPlaceholderCharacter('*');//set place holder for the empty digits of the number

            } catch (java.text.ParseException e) {
            }

            JFormattedTextField tft1 = new JFormattedTextField(fmt);

            frame.add(tft1);

            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
            frame.pack();
            frame.setVisible(true);
        }
    });
}

这会自动拥有您想要的属性,它只接受指定格式的数字 有关详细信息,请查看文档:{​​{3}}

答案 1 :(得分:0)

如何限制用户在电话文字字段中输入数字以外的字符

TF1.addKeyListener(new KeyListener() {

            @Override
            public void keyTyped(KeyEvent arg0) {
                // TODO Auto-generated method stub
                char k=arg0.getKeyChar();
                if (!(k>='0' && k<='9'))
                    arg0.consume();
            }

            @Override
            public void keyReleased(KeyEvent arg0) {
                // TODO Auto-generated method stub              
            }

            @Override
            public void keyPressed(KeyEvent arg0) {
                // TODO Auto-generated method stub              
            }
        });