1

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

4

2 回答 2

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);
        }
    });
}

这会自动具有您想要的属性,它只接受指定格式的数字查看文档以获取更多信息:JFormattedTextField

于 2012-09-06T10:27:37.013 回答
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              
            }
        });
于 2012-09-06T10:43:46.520 回答