以下のように宣言された ComboBox のコレクションがあります。
val cmbAll = for (i <- 0 to 4) yield new ComboBox(List("---", "Single", "Double"))
そして、私はそれを介してそれの1つを聞こうとします
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)」と記載されています。