2009-06-02 8 views
6

Sto provando a catturare un clic del mouse anche su un Table (che dovrebbe causare la visualizzazione di un popup). Il tavolo si trova all'interno di un ScrollPane che è (a sua volta) all'interno di uno Panel. Ho aggiunto delle reazioni a tutte le classi, ma non riesco mai a sembrare che un evento click venga catturato!Quadro evento Scala Swing - dove aggiungere i miei reattori?

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

Non importa dove clic, non viene stampato nulla. Che cosa sto facendo di sbagliato?

risposta

5

OK - Devi ascoltare alla cosa giusta:

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