2016-04-28 11 views
0

(Javaの)キーコードを送信します。 しかしは、私は整数のみを受け付けてJTextFieldを作成しようとしています

private void keyTyped(java.awt.event.KeyEvent evt) {         
    String s = String.valueOf(evt.getKeyChar()); 
    try{ 
     if(!(s.matches("[0-9]+"))) 
    { 
     evt.setKeyCode(KeyEvent.VK_DELETE); 
    } 
    }catch(Exception e){} 
}         
+0

あなたは 'VK_DELETE'がアプリケーションによって受信されない意味ですか? – Caramiriel

+0

はい。何も起こりません.i System.out.printlnでチェックし、コンソールではアルファベットのみを取得しています。 VK_DELETEは起こっていません –

答えて

1

キーコードがアプリケーションに送信されていない何らかの理由であなたの問題は、アプローチの一つである - あなたは、SwingテキストコンポーネントでのKeyListenerを使用すべきではありません。あなたは、このようなJTextFieldのようテキストコンポーネントを正しくキーボード入力をフィルタリングしたい場合は代わりに、JTextFieldののドキュメントにDocumentFilterを追加します。 insertString(...)remove(...)、およびreplace(...) - - フィルタでは、それが含まれている3つのメソッドをオーバーライドして、現在のテキストに加えて、追加のテキスト(またはマイナス削除されたテキスト)が有効であれば、スーパーのメソッドを呼び出します。 (私が)完全例えば

、同様の質問にはthis answer of mineをご覧ください。

別のより容易なオプションがInputVerifierを使用することです。

関連する問題