-1

数値も名前のテキストフィールドに入力されます。このコードは正しく機能していません。例を挙げて助けてください。

   Name_text.addKeyListener(new KeyAdapter() { 

        @Override
        public void keyTyped(KeyEvent e) {
           if(e.getKeyChar()>='0'&& e.getKeyChar()<='9'|| e.getKeyChar()>=33&& e.getKeyChar()<=47|| e.getKeyChar()>=58&& e.getKeyChar()<=64 || e.getKeyChar()>=91&& e.getKeyChar()<=96 || e.getKeyChar()>=123&& e.getKeyChar()<=127 ){
          JOptionPane.showMessageDialog(null, "enter characters only");
        }
        }
           });
4

2 に答える 2

2

あなたが望むことを達成するためのはるかに良い方法があります。

JFormattedTextFieldをチェックしてください

于 2012-08-03T14:26:36.147 に答える
2

あなたが投稿したコードは、数値が許可されていないことを訴えるダイアログを表示するだけです(見苦しいチェック、正規表現の何が問題でしたか[0-9])が、入力は削除されません。

さらに、他の回答で述べたように、組み込みの検証メカニズムまたは を使用するよりも優れた方法がありますKeyListener

  • JFormattedTextFieldユーザー入力を検証するためのテキスト フィールドです。使いやすさを向上させるには、いくつかの調整が必要です (たとえば、このブログ投稿を参照してください) 。
  • を使用しInputVerifierます。私はこのメカニズムのファンではないので、ここにリンクはありません。完全を期すために言及するだけです
  • a のDocumentListener代わりに aKeyListenerを使用すると、特定の入力を抑制することができ、ドラッグ アンド ドロップまたはコピー アンド ペーストを使用する場合にも機能しますが、これはあなたの場合には当てはまりませんKeyListener

例はリンクにあります。

于 2012-08-03T15:39:49.273 に答える