#swing #scala #scala-collections #publisher
#swing #scala #scala-коллекции #издатель
Вопрос:
Как мне сделать scala.collection.mutable.ObservableBuffer
публикацию событий swing, чтобы я мог обновлять свои компоненты при изменении буфера?
Сбивает с толку то, что scala имеет две реализации Publisher
. Один есть scala.collection.mutable.Publisher
, а второй есть scala.swing.Publisher
. К сожалению, это ObservableBuffer
расширяет только первый тип Publisher
.
Ответ №1:
Вы можете написать подкласс ObservableBuffer
, который переводит события с языка Scala на язык Swing. Я сделал это, чтобы превратить ObservableBuffer
Затмение IObservableList
, вы можете проверить это здесь: https://gist.github.com/951288
Обратите внимание, что это быстрое копирование-вставка, не все может скомпилироваться, но вы поняли идею.
Комментарии:
1. Хорошо. Наверное, я надеялся на хитрый способ, но, возможно, это невозможно.
2. Мой код, вероятно, более сложный, чем необходимо для издателя Swing; большая его часть предназначена для правильной работы с
ListDiffEvent
ofIObservableList
. Не забывайтеoverride def =
, что из-за этой ошибки: lampsvn.epfl.ch/trac/scala/ticket/44613. Филипп — Я планирую просто скопировать исходный код
ObservableBuffer
и изменить все вызовыpublish
.4. @dsg Круто, значит, вы можете напрямую избежать воспроизведения ошибки 4461, о которой говорилось выше.