2010-03-22 86 views
5

我該如何處理一個情況,在哪裏一個字段聽一個未聲明的按鈕?斯卡拉事件鞦韆::雞或蛋

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

我不能聲明seznam第一或者,因爲它引用字段detail。那我該怎麼寫呢?

+2

試着做一個或兩個字段'懶val'。 – retronym 2010-03-22 13:11:39

+0

對於一個有趣的標題+1 :-) – missingfaktor 2010-03-22 14:07:54

+1

我編輯了每個val:'%s/val/lazy val/g',但仍然找不到'錯誤 – coubeatczech 2010-03-22 15:23:36

回答

3

listenTo是一種公開的方法。最簡單的事情,因此,這是其創建爲你如上圖所示,但增加detail.listenTo(button)你所創建的按鈕後:

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