2011-07-24 66 views
1

我正在嘗試編寫一個迷你文件瀏覽器,顯示文件列表,並在更改目錄時將列表替換爲另一個列表。如何更改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的新內容?或者有人能指出我的一個例子嗎?

謝謝。

回答

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 
     } 
    } 
    } 
} 
+0

是的, 。它也給我一些關於如何安排GUI代碼的新見解。謝謝! –

+0

因爲我的代碼並不是一個很好的安排GUI代碼的例子,所以我更新了它以使它更好一些 –

2

致電myListView.listData = myListBuffer

+0

謝謝!它實際上是 myListView.listData = myListBuffer 但你的答案已經足夠接近。 (我沒有理由不在ListView中查看'listData',順便說一句,我猜是盲目的。) –

+0

:)已更新(..buffer),以便它與您的問題相符 – dacwe