【发布时间】:2011-07-26 05:40:56
【问题描述】:
我想在 Scala Swing 应用程序中使用计时器。我可以使用Java版本,只是意味着我必须实现ActionListener接口。我宁愿使用 Scala Publishers / Reactors 模型来保持一致性,这样我就可以拥有listenTo timer 的东西。
这是我尝试过的:
class ScalaTimer(time: Int) extends Component {
val t = new javax.swing.Timer(time, new java.awt.event.ActionListener {
def actionPerformed(e: java.awt.event.ActionEvent) {
publish(new scala.swing.event.ActionEvent(this))
}
})
def start() {t.start()}
def stop() {t.stop()}
// etc
}
不起作用,因为 this 指的是 ActionListener 而不是 ScalaTimer 类。
另外,我可能不应该扩展 Component... 我尝试了这个,因为我获得了 Publisher / Reactor 功能,但这并没有真正的意义。我应该做这样的事情吗?如果是这样,我还需要包含其他特征吗?我怎么知道我必须实现哪些方法?
class ScalaTimer extends javax.swing.Timer with Publisher {
(我的 IDE 立即标记“方法 Timer(Int, ActionListener) 缺少参数”,这似乎有点奇怪,因为我没有调用方法。)
【问题讨论】:
-
完整解决方案见我的博客:luigip.com/?p=48
标签: java swing scala timer wrapper