Scala Swing:验证文本字段的整数输入

Posted

技术标签:

【中文标题】Scala Swing:验证文本字段的整数输入【英文标题】:Scala Swing: verifying Integer input forTextfield 【发布时间】:2012-07-26 02:36:49 【问题描述】:

我有一个希望从中获取整数输入的 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) 

但是在应用过滤器之后会添加新的按键。

【问题讨论】:

【参考方案1】:

答案是如下使用event.consume

val intF = new TextField(defInt.toString, 5)

   inputVerifier = myV _
   listenTo(keys)
   reactions +=
   
      case e: KeyTyped =>     
      
         if (!e.char.isDigit)
            e.consume           
      
   

【讨论】:

以上是关于Scala Swing:验证文本字段的整数输入的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 验证文本字段中的输入

如何使用 React.JS 正确验证输入值?

根据复选框条件验证输入文本字段(最大值和最小值)

js验证文本框只能输入正整数或带一位小数的数,该怎么写呢?

Flutter:表单验证同时验证所有文本字段

文本字段中的 javascript 验证