JarsOfJam-Scheduler
JarsOfJam-Scheduler

Reputation: 3179

Lambda function's input's parameter in Scala

I'm using addChangeListener from the Java Swing API in my Scala program. The compiler of ScalaFiddle indicates an error in the following code :

spinner_1.addChangeListener(e => {
              ...
})

error: missing parameter type spinner_1.addChangeListener(e => {

I tried to write e : ChangeListener, but it didn't solve this problem. I didn't find something useful for that in Scala's documentation.

How could I deal with it ?

Upvotes: 0

Views: 131

Answers (1)

Duelist
Duelist

Reputation: 1572

It works in Scala 2.12. But if you have to use older version like 2.11, you can use implicit conversion. Here is an example:

import javax.swing.JTabbedPane
import javax.swing.event.{ChangeEvent, ChangeListener}

implicit def convertToChangeListener(f: ChangeEvent => Unit): ChangeListener =
  new ChangeListener {
    override def stateChanged(e: ChangeEvent): Unit = f.apply(e)
  }

val listener: ChangeListener = (e: ChangeEvent)  => ...

new JTabbedPane().addChangeListener(listener)

Upvotes: 3

Related Questions