所以我在scala中有以下简单程序:
object CViewerMainWindow extends SimpleSwingApplication {
var i = 0
def top = new MainFrame {
title = "Hello, World!"
preferredSize = new Dimension(320, 240)
// maximize
visible = true
contents = new Label("Here is the contents!")
listenTo(top)
reactions += {
case UIElementResized(source) => println(source.size)
}
}
object CViewer {
def main(args: Array[String]): Unit = {
val coreWindow = CViewerMainWindow
coreWindow.top
}
}
我原本希望它会创建一个普通的窗口。相反,我得到了这个:
答案 0 :(得分:2)
您正在创建一个无限循环:
def top = new MainFrame {
listenTo(top)
}
也就是说,top
正在调用top
正在调用top
...以下内容应该有效:
def top = new MainFrame {
listenTo(this)
}
但更好更安全的做法是禁止主框架多次实例化:
lazy val top = new MainFrame {
listenTo(this)
}