2009-06-02 13 views
6

Ben yakalamaya çalışıyorum (bir pop-up gösterilmesine neden olmalıdır) bile Table fareyi tıklayın. Tablo, Panel'un içinde (sırasıyla) ScrollPane'un içindedir. Tüm derslere tepkileri ekledim, ama asla yakalanabilecek bir tıklama olayı göremiyorum!Scala Swing olay çerçevesi - reaktörlerimi nereye ekleyebilirim?

class MyPanel extends GridBagPanel { 
    val gbc = new GridBagContraints(...) 

    add(new ScrollPane { 
    reactions += { 
     case MouseClicked(src, point, mod, clicks, pops) => 
     println("Scroll pops: " + pops) 
    } 

    viewportView = new Table { 
     reactions += { 
     case MouseClicked(src, point, mod, clicks, pops) => 
      println("Table pops: " + pops) 
     } 

     ... 
    } 

    }, gbc) 

    reactions += { 
    case MouseClicked(src, point, mod, clicks, pops) => 
     println("Panel pops: " + pops) 
    } 
} 

Nereye tıklamam önemli değil, hiçbir şey yazdırılmaz. Neyi yanlış yapıyorum?

cevap

5

Tamam - Sen zorunda doğru şey dinlemek:

class MyPanel extends GridBagPanel { 
    val gbc = new GridBagContraints(...) 

    val table = new Table { ... } 

    add(new ScrollPane { 

    viewportView = table 
    } 

    }, gbc) 

    listenTo(table.Mouse.clicks) //THIS LINE IS IMPORTANT :-) 

    reactions += { 
    case MouseClicked(`table`, point, mod, clicks, pops) => 
     println("Panel pops: " + pops) 
    } 
    } 
} 
İlgili konular