Фреймворк Scala Swing - где я могу добавить свои реакторы?
Я пытаюсь поймать щелчок мыши даже на Table
(что должно вызвать отображение всплывающего окна). Стол находится внутри ScrollPane
который (в свою очередь) внутри Panel
, Я добавил реакции на все классы, но я никогда не смогу получить событие щелчка!
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)
}
}
Независимо от того, где я нажимаю, ничего не печатается. Что я делаю неправильно?
1 ответ
Решение
ОК - Вы должны слушать правильную вещь:
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)
}
}
}