У меня есть коллекция ComboBox, объявленная как показано ниже.
val cmbAll = for (i <- 0 to 4) yield new ComboBox(List("---", "Single", "Double"))
И я пытаюсь прослушать один из них через
listenTo(cmbAll(0).selection)
Однако я не могу на самом деле выполнить реакции.
reactions += {
case SelectionChanged(`cmbAll(0)`) => /** action here **/
}
Все это размещено в TabbedPane. Я думаю, это не проблема. Так как же прослушать отдельные компоненты внутри коллекции?
1012 * Отредактировано *
Это более полный код, который я пробую в Eclipse.
import scala.swing._
import scala.swing.event._
object CMBTest extends SimpleSwingApplication {
lazy val ui = new TabbedPane {
import TabbedPane._
val cmbCategory = for (i <- 0 to 4) yield new ComboBox(List("---", "Single", "Double"))
val cmbTab = new GridBagPanel {
import GridBagPanel._
val c = new Constraints
c.insets = new Insets(5, 5, 5, 5)
for (i <- 0 to 4) {
c.gridx = 0
c.gridy = i
layout(cmbCategory(i)) = c
}
}
pages += new Page("CMBTest", cmbTab)
listenTo(cmbCategory(0))
reactions += {
case SelectionChanged(`cmbCategory(0)`) => {
println("This is cmbCategory(0) calling")
}
}
}
def top = new MainFrame {
title = "ComboBox Array Test"
contents = ui
}
}
Это сообщение об ошибке, которое я получаю, находится в части реакции, и в нем говорится, что "not found: value cmbCategory (0)".