orSt:
私は、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
と同じでなければなりません3
。私はのIntelliJ IDEAでビルドして実行しようとすると、しかし、私はこのエラーを受け取ります:
Error:(4, 35) value EXIT_ON_CLOSE is not a member of object javax.swing.JFrame setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
追加import javax.swing.JFrame.EXIT_ON_CLOSE
のいずれかの動作しません。
私が間違ってやっている人を知っていますか?
アレクセイ・ロマノフ:
あなたはそれがだ場所を使用する必要があり、実際に、で定義されているがjavax.swing.WindowConstants
。Javaコンパイラは、見ているときJFrame.EXIT_ON_CLOSE
、それはに書き換えていますWindowConstants.EXIT_ON_CLOSE
。Scalaのコンパイラはそれをしない(どちらもありませんKotlin)。
それはで宣言するために使用されるJFrame
が、Javaの9で削除されました。それは、リンクで説明したように、Java用のソース-とバイナリ互換性が変化するのですが、Scalaの/ Kotlinのためのソース互換性がありません。