将ChangeListener添加到javafx文本字段以在scala

时间:2015-08-20 13:33:09

标签: scala javafx

我尝试将ChangeListener添加到TextField但是出现错误。

这是我试过的例子

class MyTextField() extends TextField
{

  val change: javafx.beans.value.ChangeListener[Boolean] = new TextFieldChangeListener
  focusedProperty().addListener(change)

  class TextFieldChangeListener extends ChangeListener[Boolean] 
  {
    override def changed(arg0: ObservableValue[_ <: Boolean], oldPropertyValue: Boolean, newPropertyValue: Boolean) 
    {
       println("Fokus")
    }
 }
}

这些是我导入的软件包

import javafx.beans.value.ObservableValue
import javafx.beans.value.ChangeListener
import javafx.scene.control.TextField

但是我在eclipse中遇到以下错误:

overloaded method value addListener with alternatives: (x$1: 
javafx.beans.value.ChangeListener[_ >: java.lang.Boolean])Unit <and>    
(x$1:javafx.beans.InvalidationListener)Unit cannot be applied to    
(javafx.beans.value.ChangeListener[scala.Boolean])

原因可能是scala.Booleanjava.lang.Boolean,但我对此并不确定。

1 个答案:

答案 0 :(得分:0)

在Java中,Boolean表示java.lang.Boolean(如果没有导入则说明其他情况)。在Scala中,它意味着scala.BooleanfocusedProperty(),作为一种JavaFX方法,显然无法了解scala.Boolean