2

そのJFormattedTextFieldため、ユーザーが文字とハイフン以外を入力できないように制限する必要があります。MaskFormatter入力する文字列の長さを明示的に知らずにを使用する方法がよくわかりません。

私のコードは現在次のようになっています。

MaskFormatter formatter = new MaskFormatter();
formatter.setValidCharacters("ABCDEFGHIJKLMNOPQRSTUVWXYZabscedfghijklmnopqrstuvwxyz-");
JFormattedTextField firstNameTextField = new JFormattedTextField(formatter);

を呼び出すfirstNameTextField.setText(getName())と、テキストが設定されず、使用できない空のテキスト フィールドが残ります。

どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

0

文字列の長さに関してコミットメントを望まないので、通常のJTextFieldとKeyListenerをKeyAdapterとともに使用すると、JFormattedTextFieldとそのMaskFormatterの効果を実現するのがはるかに簡単であるという印象があります。各キーストロークを許可された文字列と照合して、文字を受け入れるかビープ音を鳴らすことができます。

于 2011-01-25T21:25:46.540 に答える
0

ちょっと私は同様の問題を抱えていて、jFormatterの代わりに使用したのはjTextfieldであり、keyListenerで同じことを達成しました

コードはこちら

jTextFieldName.addKeyListener(new KeyListener() {

            @Override
            public void keyTyped(KeyEvent evt) {
                char c = evt.getKeyChar();
                if(!Character.isDigit(c) || (c==KeyEvent.VK_BACK_SPACE) || (c==KeyEvent.VK_DELETE))
                {
                    f.getToolkit().beep();
                    evt.consume();
                }

            }

            @Override
            public void keyReleased(KeyEvent e) {
            }
            @Override
            public void keyPressed(KeyEvent e) {
            }
        });

ここで「f」はJFrameに他なりません

于 2013-11-30T06:13:57.543 に答える