SimpleSwingApplication 创建了看似无限数量的相同 windows
SimpleSwingApplication created a seemingly infinite amount of identical windows
所以我在 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
}
}
我曾希望它会创建一个普通的 window。相反,我得到这个:
您正在创建一个无限循环:
def top = new MainFrame {
listenTo(top)
}
也就是说,top
正在调用 top
正在调用 top
...以下应该有效:
def top = new MainFrame {
listenTo(this)
}
但是更好更安全的方法是禁止多次实例化主框架:
lazy val top = new MainFrame {
listenTo(this)
}
所以我在 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
}
}
我曾希望它会创建一个普通的 window。相反,我得到这个:
您正在创建一个无限循环:
def top = new MainFrame {
listenTo(top)
}
也就是说,top
正在调用 top
正在调用 top
...以下应该有效:
def top = new MainFrame {
listenTo(this)
}
但是更好更安全的方法是禁止多次实例化主框架:
lazy val top = new MainFrame {
listenTo(this)
}