如何在Scala中更改ListView的内容?

时间:2011-07-24 20:01:39

标签: user-interface scala listview

我正在尝试编写一个迷你文件浏览器,我在其中显示文件列表,并在更改目录时将列表替换为另一个。

我可以显示一个列表:

val myList = List("Paris", "New York", "Tokyo", "Berlin", "Copenhagen")
val myListBuffer = new ListBuffer[String] ()
myListBuffer.appendAll(myList)
val myListView = new ListView(myListBuffer)
...
contents += myListView

为了响应某个事件,我想更改显示的内容。我尝试过的大部分内容都会使列表“不可见”(但仍会响应上下箭头的选择) - 有时候只有在选中元素时才会使元素不可见!

如何更新ListView以反映ListBuffer的新内容?或者有人能指出我的一个例子吗?

感谢。

2 个答案:

答案 0 :(得分:6)

这似乎有效:

object LVTest extends SimpleSwingApplication {

  def top = new MainFrame {
    contents = myListView
    size = new Dimension(200, 200)
  }

  val myListView = new ListView[String]() {
    val myListBuffer = ListBuffer("Paris", "New York", "Tokyo", "Berlin", "Copenhagen")
    listData = myListBuffer
    listenTo(mouse.clicks)
    reactions += {
      case e: MouseClicked => {
        myListBuffer += "Slough"
        listData = myListBuffer
      }
    }
  }
}

答案 1 :(得分:2)

致电myListView.listData = myListBuffer