我有一个带面板的简单应用程序,我想在点击它时暂停并重新开始绘画.
object ModulusPatterns extends SimpleSwingApplication {
var delay_ms = 200
def top = new MainFrame {
contents = panel
}
val panel = new Panel {
override def paintComponent(g: Graphics2D) { /* draw stuff */ }
listenTo(mouse.clicks)
reactions += {
case e: MouseClicked => {
val r: Boolean = repainter.isRunning
if (r) repainter.stop() else repainter.start()
}
}
}
val repainter = new Timer(delay_ms, new ActionListener {
def actionPerformed(e: ActionEvent) {
panel.repaint
}
})
repainter.start()
}
Run Code Online (Sandbox Code Playgroud)
我在val r定义行上遇到编译错误:
error: recursive value repainter needs type
val r: Boolean = repainter.isRunning
Run Code Online (Sandbox Code Playgroud)
据我所知,我在这里没有做任何递归的事情.这是一个错误吗?任何解决方法?
据我所知,我在这里没有做任何递归的事情.
是的,你是:定义是panel指repainter,而定义是repainter指panel.所以没有错误,你需要为它们指定类型.