ユーザーが整数/浮動小数点数などしか入力できないように、scala.swing.TextComponentに入力するフィルターを追加する便利な方法はありますか?特に、ペーストをテキストフィールドにフィルタリングする方法はありますか?Javaでは、これを行うためにDocumentFilterを使用しました。私はこれについていくつかのバリエーションを試しました:
object inputField extends TextField{
peer.getDocument.asInstanceOf[AbstractDocument].setDocumentFilter(new DocumentFilter{
def insertString(fb: FilterBypass, offs: Integer, str: String, a: AttributeSet){
if(str.forall((c)=>c.isDigit)) super.insertString(fb, offs, str, a)
}
def replace(fb: FilterBypass, offs: Integer, l: Integer, str: String, a: AttributeSet){
if(str.forall((c)=>c.isDigit)) super.replace(fb, offs, l, str, a)
}
})
}
これは機能していません。私はそれを間違っていますか、それともScalaはドキュメントフィルターを無視しますか?これを行う別の方法はありますか?それが必要な場合は、完全にjava.swingGUIを使用しても大丈夫かもしれません。