Scala - 计时器示例

3

我有一段代码,试图构建一个计时器,它将减少 TextField 中给定值(TextField 应该包含完成工作所需的分钟数,但这些分钟将手动给出,然后通过此时钟进行减少):

import scala.swing._

class ScalaTimer(val delay: Int) {
  val tmr: javax.swing.Timer = new javax.swing.Timer(delay, null)
  def start() = tmr.start()
  def stop() = tmr.stop()
}

object Test33 { //extends SimpleSwingApplication {
  val timer = new ScalaTimer(50)
  timer.tmr.start
  //def top = new MainFrame {
 def main(args: Array[String]) {
    timer.tmr.addActionListener(Swing.ActionListener(e => {
    println(timer.delay - 1)
    }))
 }
 //}
}

我不明白为什么使用main()方法时没有输出任何内容,但使用Frame时却输出了当前给定的延迟时间 :|

1个回答

3
你的代码不会打印任何内容,因为你的应用程序在添加 ActionListener 后立即退出,还没有机会触发它!尝试添加以下代码:
Thread.sleep(10000);
< p > 在你的 main 方法结束之前加入下面这行代码,你会发现它会重复打印出 49。 < /p> < p > 它可以在 Frame 中正常工作,因为在 Frame 关闭之前应用程序不会终止。 < /p>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接