2010-03-22 15 views
5

¿cómo puedo manejar una situación en la que un archivo escucha botones que aún no están declarados?scala event swing :: chicken or egg

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") 
    } 
    } 

no puedo declarar seznam primera tampoco, porque el campo Referencia detail. Entonces, ¿cómo puedo escribir esto?

+2

trate de hacer uno o ambos campos un 'val' perezoso. – retronym

+0

+1 por un título interesante :-) – missingfaktor

+1

he editado todos los val: '% s/val/lazy val/g' y sigo recibiendo el error' not found' – coubeatczech

Respuesta

3

listenTo es un método público. La cosa más fácil de hacer, por lo tanto, es la creación de ellos como usted ha mostrado anteriormente, además de añadir detail.listenTo(button) después de haber creado el botón:

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) 
}