JTextArea で許可される文字を制限する簡単な方法があるかどうかは誰でも知っています。つまり、MaskFormatter を使用した JTextField に似ています。
具体的には、JTextArea で使用できる文字を大文字のみに制限し、!"#¤%&/()= のような非常に限られたセット文字のみに制限したいと考えています。
ドキュメント フィルターのチェーンの概念が興味深いと思われるかもしれません。最初のフィルターは小文字を大文字に自動的に変換するため (上記のリンクに含まれています)、ユーザーはこれについて心配する必要がありません。次に、2 番目のフィルターはすべての文字を検証します (独自に記述する必要があります)。
を実装しjavax.swing.text.DocumentFilter
て、不適切な文字を削除します。それをお気に入りに設定し、それであなたAbstractDocument
を構築しますJTextArea
。
メソッドを拡張PlainDocument
および変更しinsertString()
て、不要な文字をすべて除外し、小文字を大文字に置き換えてみてください。次に、この特別なドキュメントを で使用できますJTextArea
。
JTextArea ドキュメントにフィルターを割り当てることができます。クラス DocumentFilter のメソッド insertString をオーバーライドして、文字を無視するだけです。