He estado tratando de ejecutar el siguiente fragmento de código Scala:
import javax.swing.JFrame
class ScalaClass(title: String) extends JFrame(title: String) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
// ...
}
object Main {
def main(args: Array[String]) : Unit = {
var sFrame : JFrame = new ScalaClass("Hi");
}
}
JFrame.EXIT_ON_CLOSE
debe ser igual a 3
. Sin embargo, cuando intento para generar y ejecutar en IntelliJ IDEA que recibo este error:
Error:(4, 35) value EXIT_ON_CLOSE is not a member of object javax.swing.JFrame setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
Añadiendo import javax.swing.JFrame.EXIT_ON_CLOSE
que no funciona bien.
¿Alguien sabe lo que estoy haciendo mal?
Es necesario utilizar el lugar que está realmente definido en, javax.swing.WindowConstants
. Cuando el compilador de Java ve JFrame.EXIT_ON_CLOSE
que ha reescrito en WindowConstants.EXIT_ON_CLOSE
; el compilador Scala no hace eso (tampoco lo hace Kotlin).
Lo que solía ser declarada en JFrame
pero fue eliminado en Java 9 ; es un cambio fuente- y compatible binario de Java, como se describe en el enlace, pero no el código compatible para Scala / Kotlin.