2009-06-02 6 views
6

J'essaye d'attraper un clic de souris même sur un Table (qui devrait faire apparaître un popup). La table est à l'intérieur d'un ScrollPane qui est (à son tour) à l'intérieur d'un Panel. J'ai ajouté des réactions à toutes les classes, mais je n'arrive jamais à avoir un événement click à attraper!Scala Swing événement cadre - où puis-je ajouter mes réacteurs?

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

N'importe où je clique, rien ne s'imprime. Qu'est-ce que je fais mal?

Répondre

5

OK - Vous devez écouter à la chose correcte:

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