Scala Арэлі Навічок

Im спрабуе стварыць акно ўваходу для прыкладання ім рабіць. Я шукаў увесь дзень для прыкладу, але я не магу здацца, каб знайсці што-небудзь, што дапамагае. Мая асноўная структура выглядае наступным чынам:

// App.scala
object App extends SimpleSwingApplication {
  val ui = new BorderPanel {
    //content
  }

  def top = new MainFrame {
    title = "title"
    contents = ui
  }
}

Так Што стратэгіі, каб стварыць акно ўваходу ў сістэму без паказу мэйнфрэймаў і яго закрыцця пасля ўваходу ў сістэму і адлюстравання мэйнфрэйм. дзякуй

3

1 адказы

Тут працуе прыклад. Узяў адзін з маіх праектаў і наладзіў трохі для вас:

import swing._
import scala.swing.BorderPanel.Position._

object App extends SimpleSwingApplication {
  val ui = new BorderPanel {
    //content
  }

  def top = new MainFrame {
    title = "title"
    contents = ui
  }

  val auth = new LoginDialog().auth.getOrElse(throw new IllegalStateException("You should login!!!"))
}

case class Auth(userName: String, password: String)

class LoginDialog extends Dialog {
  var auth: Option[Auth] = None
  val userName = new TextField
  val password = new PasswordField

  title = "Login"
  modal = true

  contents = new BorderPanel {
    layout(new BoxPanel(Orientation.Vertical) {
      border = Swing.EmptyBorder(5,5,5,5)

      contents += new Label("User Name:")
      contents += userName
      contents += new Label("Password:")
      contents += password
    }) = Center

    layout(new FlowPanel(FlowPanel.Alignment.Right)(
      Button("Login") {
        if (makeLogin()) {
          auth = Some(Auth(userName.text, password.text))
          close()
        } else {
          Dialog.showMessage(this, "Wrong username or password!", "Login Error", Dialog.Message.Error)
        }
      }
    )) = South
  }

  def makeLogin() = true//here comes you login logic

  centerOnScreen()
  open()
}

Як вы можаце бачыць, я звычайна выкарыстоўваючы мадальны дыялог, таму ён будзе блакаваць падчас ініцыялізацыі прыкладання. Там 2 выніку: альбо карыстальнік робіць паспяховую рэгістрацыю і бачыць свой галоўны фрэйм ​​або дыялог ўваходу і IllegalStateException ён закрывае будзе кінуты.

6
дададзена
Дзякуй за дапамогу ....
дададзена аўтар Ray Goodwin, крыніца