2

I have a collection of ComboBox declared as below.

val cmbAll = for (i <- 0 to 4) yield new ComboBox(List("---", "Single", "Double")) 

And I try to listen to one of it via

listenTo(cmbAll(0).selection) 

However, I can't actually perform the reactions.

reactions += { case SelectionChanged(`cmbAll(0)`) => /** action here **/ } 

All these are placed in a TabbedPane. I guess this is not the problem. So how can I listen to individual components inside of the collection?

Edited

This is a more complete code that I am trying in 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 } } 

That error message that I am having is in the reactions part and it states that "not found: value cmbCategory(0)".

2
  • Can you post some more complete code? Commented Oct 27, 2010 at 8:40
  • I have added a more complete code to the edited part. Commented Oct 27, 2010 at 10:43

1 Answer 1

3

I don't think anything other than a stable identifier is allowed inside ` in pattern matches. In your case, you are implicitly calling the apply method by doing (0).

You may try instead this:

val category = cmbCategory(0) case SelectionChanged(`category`) => { println("This is cmbCategory(0) calling") 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.