1

私はJavaスイングを学んでいます。JComboBoxさまざまな水深を選択するための編集可能なものと、JTextField携帯電話番号を受け入れるための編集可能なものがあります。私の質問は、ユーザーがこれら2つのフィールドに数字のみを入力するように制限するにはどうすればよいですか。また、携帯電話番号の文字入力の最大数を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 に答える