2011-05-02 49 views
0

如何发布scala.collection.mutable.ObservableBuffer发布摆动事件,以便在缓冲区更改时更新我的​​组件?ObservableBuffer发布摆动事件

令人困惑的是scala有Publisher两个实现。一个是scala.collection.mutable.Publisher,第二个是scala.swing.Publisher。不幸的是,ObservableBuffer只扩展了第一种类型Publisher

回答

2

您可以编写一个ObservableBuffer的子类,它将事件从Scala方式转换为Swing方式。我这样做是为了把一个ObservableBuffer到Eclipse中IObservableList,你可以看看这里:https://gist.github.com/951288

注意,它是一种快速的复制粘贴,而不是一切都可能编译,但你的想法。

+0

好的。我想我希望能有一种光鲜的方式,但也许这是不可能的。 – dsg 2011-05-02 09:33:09

+0

我的代码可能比Swing发布者需要的更复杂;其中大部分是正确处理'IObservableList'的'ListDiffEvent'。不要忘了'override def ++ =',因为这个bug:https://lampsvn.epfl.ch/trac/scala/ticket/4461 – 2011-05-02 09:40:40

+0

Philippe - 我打算只复制' ObservableBuffer'并修改所有对'publish'的调用。 – dsg 2011-05-02 09:43:26