【发布时间】:2012-12-05 04:26:47
【问题描述】:
有没有一种方便的方法可以将过滤器添加到 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.swing GUI。
【问题讨论】:
-
我不确定您是否可以在构造 TextField 时附加 DocumentFilter(我在 java 中从未见过这样的示例)。您是否尝试过创建一个普通的 TextField 并在创建后将 DocumentFilter 附加到它?
标签: scala