我有一个声明如下的 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 中。我想这不是问题。那么如何才能收听集合中的各个组件呢?
已编辑
这是我在 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
}
}
我收到的错误消息在反应部分,它指出“未找到:值 cmbCategory(0)”。