我有一个希望从中获取整数输入的 TextField。在之前的 c# Wpf 版本中,我订阅 PreviewTextInput 如下:
private void PrevInp(object sender, TextCompositionEventArgs e)
{
int temp;
if (!(int.TryParse(e.Text, out temp)))
e.Handled = true;
else
if (TextAltered == false)
{
inp.Text = "";
TextAltered = true;
}
}
希望我可以在 Scala 中做一些更简洁的事情。我看到您可以为 inputVerifier 设置一个函数,但 inputVerifier 仅在 TextField 失去焦点时调用。
我可以像这样使用 KeyTyped 事件:
val intF = new TextField(defInt.toString, 5)
{
inputVerifier = myV _
listenTo(keys, this)
reactions += { case e: KeyTyped => text = text.filter(_.isDigit)}
def myV(v: Component ): Boolean = text.forall(_.isDigit)
}
但是在应用过滤器后会添加按下的新键。