使用Scala的Swing包装器,如何通过foreach使用集合更新面板的内容?

时间:2012-11-07 18:57:44

标签: swing scala foreach

我有一个面板和一个包含引用.png文件的文件名的列表 我可以使用以下命令将该列表的任何单个索引中的字符串转换为图像:

val label = new Label {
  icon = new ImageIcon(myList(0))
}  

然后我可以将该标签添加到面板中:

object myGUI extends SimpleGUIApplication {
  def top = new MainFrame {
    title = "My simple GUI"
    contents += label
  }
}  

但如果我想为列表中的每个条目构建一个标签,并将每个标签添加到myGUI,该怎么办?

我希望使用foreach或其他一些惯用的scala概念来实现。如果不同的收集类型更有意义,我不需要使用List。但是,据我所知,对于数组或映射,集合处理函数与List相同,因此集合类型不重要(无论如何,在此特定GUI相关问题的范围内)

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解你的问题,但这不起作用吗?:

object myGUI extends SimpleGUIApplication {
  def top = new MainFrame {
    title = "My simple GUI"
      val list = ... //your list of filepaths
      list foreach { filepath =>
        contents += new Label { icon = new ImageIcon(filepath) }
      }    
  }
}