2009-06-02 9 views
6

Ich versuche, einen Mausklick sogar auf eine Table zu fangen (was dazu führen sollte, dass ein Popup angezeigt wird). Die Tabelle befindet sich in einem ScrollPane, der (wiederum) innerhalb eines Panel ist. Ich habe Reaktionen auf alle Klassen hinzugefügt, aber ich kann nie scheinen, dass ein Klickereignis tatsächlich gefangen wird!Scala Swing Event Framework - Wo füge ich meine Reaktoren hinzu?

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

Egal wo ich klicke, nichts wird gedruckt. Was mache ich falsch?

Antwort

5

OK - Sie müssen hören auf die richtige Sache:

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