【问题标题】:Scala Swing Wait斯卡拉摇摆等待
【发布时间】:2011-04-13 00:58:13
【问题描述】:
//Main.scala
/* imports */

object Main extends SimpleSwingApplication {
  lazy val ui = new TabbedPane {
    /* contents */
  }

  def top = new MainFrame {
    /* contents */
  }

  override def startup(args: Array[String]) {
    val t = top

    val loginStatus = new Login(t).status

    if (loginStatus == true) {
      if (t.size == new Dimension(0, 0)) t.pack
      t.visible = true
    } else
      quit
  }
}

//Login.scala
class Login(owner: Window) extends Dialog(owner) {
  import Login._

  var status = true
  contents = ui

  listenTo(login) //login is a Button
  reactions += {
    case ButtonClicked(login) => {
      if (/* login field is empty */)
        status = false
      else if (/* login info is correct */)
        status = true
      else /*login info is wrong*/
        status = false
    }
  }
}

如何让“主”等待“登录”后再显示?

【问题讨论】:

  • 我认为您在以下位置缺少括号: if (t.size == new Dimension(0, 0) t.pack

标签: scala scala-swing


【解决方案1】:

使用CountDownLatch

//Main.scala
/* imports */

object Main extends SimpleSwingApplication {
  private val latch = new CountDownLatch(1)

  lazy val ui = new TabbedPane {
    /* contents */
  }

  def top = new MainFrame {
    /* contents */
  }

  override def startup(args: Array[String]) {
    val t = top

    val loginDialog = new Login(t, latch)
    latch.await

    val loginStatus = loginWindow.status

    if (loginStatus == true) {
      if (t.size == new Dimension(0, 0)) { t.pack }
      t.visible = true
    } else
      quit
  }
}

//Login.scala
class Login(owner: Window, latch: CountDownLatch) extends Dialog(owner) {
  import Login._

  var status = true
  contents = ui

  listenTo(login) //login is a Button
  reactions += {
    case ButtonClicked(login) => {
      latch.countdown

      if (/* login field is empty */)
        status = false
      else if (/* login info is correct */)
        status = true
      else /*login info is wrong*/
        status = false
    }
  }
}

【讨论】:

    猜你喜欢
    • 2011-08-10
    • 2012-05-16
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    • 2021-08-17
    相关资源
    最近更新 更多