2010-03-22 7 views
5

wie kann ich mit einer situation umgehen, wo ein feld auf eine taste hört, die noch nicht deklariert ist?scala event swing :: huhn oder ei

val detail = new BoxPanel(Orientation.Vertical){ 
    listenTo(button) 
    } 
    val seznam = new BoxPanel(Orientation.Vertical){ 
    val button = new Button("But"){ 
     reactions += { 
     case ButtonClicked(_) => 
      detail.contents.clear 
      detail.contents += new Label("Anystring") 
    } 
    } 

Ich kann nicht seznam erklärt zuerst entweder, weil sie das Feld detail verweisen. Wie kann ich das schreiben?

+2

Probieren Sie eine oder beide Felder machen ein 'faul val'. – retronym

+0

+1 für einen interessanten Titel :-) – missingfaktor

+1

Ich habe jedes val bearbeitet: '% s/val/lazy val/g' und ich bekomme immer noch' not found' Fehler – coubeatczech

Antwort

3

listenTo ist eine öffentliche Methode. Die einfachste Sache zu tun, deshalb ist sie zu erstellen, wie Sie oben gezeigt habe, aber hinzufügen detail.listenTo(button), nachdem Sie auf die Schaltfläche erstellt haben:

val detail = new BoxPanel(Orientation.Vertical){ } 
val seznam:BoxPanel = new BoxPanel(Orientation.Vertical){ 
    val button = new Button("But"){ 
    reactions += { 
     case ButtonClicked(_) => 
     detail.contents.clear 
     detail.contents += new Label("Anystring") 
    } 
    } 
    detail.listenTo(button) 
}