2017-08-29 20 views
1

を確認するために、私は私がでフルテキストを取得している間、私は私の入力チェックを実行した上でKeyEvent.KEY_TYPED、持っている:正規表現は許容入力

text = text + event.getCharacter(); 

しかし、私は、私は、ユーザーの入力することができる唯一の許容文字を追加することを確認する必要がありますがすべての数字、文字、特殊文字を含みます。すでにアプリは英語、エストニア語、ロシア語をサポートしており、将来はさらに多くの言語が追加されるはずです。どのような種類のregexは、Esc,Backspaceなどを除外する必要がありますか?

+0

を使用することができますか?そのような文字(または '' \\ P {Cntrl} '')とマッチさせるには '' \\ P {Cc} ''を使用してください。 –

+0

Wiktorありがとう、それは私が探していたものです。たぶんあなたは答えとして投稿することができます、私はそれを正しいとマークすることができますか? – Alyona

+0

私は答えとして投稿しました。 –

答えて

1

制御文字以外の任意の文字に一致させるには、あなたが文字を制御していない任意の文字を許可しますか

"\\P{Cc}" 

または

"\\P{Cntrl}" 
1

KEY_TYPEDは、視覚的に入力として表示されるキー(したがって、タイプの)についてのみです。バックスペースなどのコントロールキーが押されないようにするには、keyPressedやkeyReleasedなどの他のイベントを調べる必要があります。コントロール文字でも通知を受け取ります。 KeyEvent javadocから

「キー入力の」イベントは、より高いレベルであり、一般 プラットフォームやキーボードレイアウトに依存しません。これらは、Unicode 文字が入力されたときに生成され、約 文字入力を見つけるために推奨される方法です。最も単純な場合、キー入力されたイベントは、単一のキープレス(例えば、「a」)によって で生成される。しかしながら、多くの場合、文字は一連のキープレス(例えば 'shift' + 'a')によって生成された であり、キー押下イベントからキー入力イベントへのマッピングは またはmany-たくさんの。 キータイプのイベントを生成するためにキーリリースは通常は必要ありませんが、キーが離されるまで、キータイプイベントが でない場合があります(WindowsのAlt-NumpadメソッドでASCIIシーケンス など)。 ユニコード文字を生成しないキー(たとえば、 アクションキー、修飾キーなど)に対してキー入力イベントは です。

しかし、たとえばバックスペースを許可しないと、ユーザーの観点から問題があります。そのルートに行きたい場合は、すべての関連する使用シナリオを考えたことに注意してください。 keytypedイベントは制御文字を取得しないため、多分あなたがしたいことをやっているかもしれません。