ObservableBuffer для публикации событий swing

#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 of IObservableList . Не забывайте override def = , что из-за этой ошибки: lampsvn.epfl.ch/trac/scala/ticket/4461

3. Филипп — Я планирую просто скопировать исходный код ObservableBuffer и изменить все вызовы publish .

4. @dsg Круто, значит, вы можете напрямую избежать воспроизведения ошибки 4461, о которой говорилось выше.