2

誰かが文字の代わりに数字を入力したときに完全に正常に機能する JTextField があります。私の唯一の問題は、番号が消えないことです。ユーザーは他の数字を入力することはできませんが、最後に押された数字は常にフィールドに残ります! なんで?

    searchF.addKeyListener(new KeyAdapter(){
            public void keyTyped(KeyEvent e){
                char ch = e.getKeyChar();
                if(Character.isDigit(ch)){
                    searchF.setText(" ");
                    JOptionPane.showMessageDialog(null, "Please Enter Only Names or Surnames. Letters Only Allowed");
                    searchF.setText(" ");
                   }
               }
 });
4

3 に答える 3

4

誰かが文字の代わりに数字を入力したときに完全に正常に機能する JTextField があります。私の唯一の問題は、番号が消えないことです。

于 2013-10-07T12:36:10.653 に答える
3

によって処理される前にイベントを取得しますTextField。できることは、イベントを消費するTextFieldことです。そのようにすると、イベントは受信されません。

(より良いアプローチは かもしれませんがDocumentFilter、 を使用して数字を にコピーして貼り付けることができますTextFieldKeyListener)

于 2013-10-07T12:34:23.587 に答える
3

これは、問題に対処する別の方法です。キーイベントが数値の場合は消費します。これにより、ユーザーは入力を失うことはありませんが、メッセージは表示されます。

  if(Character.isDigit(ch)){
                JOptionPane.showMessageDialog(null, "Please Enter Only Names or Surnames. Letters Only Allowed");
             e.consume();
               }
于 2013-10-07T12:36:21.027 に答える