Как сделать собственные события Scala UI
В настоящее время я занимаюсь разработкой своего первого более крупного проекта Scala Swing, и я написал свой собственный компонент как часть редактора карты тайлов, в котором пользователь выбирает тайлы.
Подобно тому, как поле со списком генерирует какое-то событие, когда выбирается другой элемент, я хочу, чтобы этот компонент делал то же самое с моими собственными классами case. Я не нашел ни одной статьи или учебника по этой теме.
В дальнейшем обратите внимание, как я также могу написать компонент, который публикует события подкомпонентов. Так что это просто достигает их.
1 ответ
Возможно, посмотрите на другие проекты, расширяющие скала-свинг. Например, есть ScalaSwingContrib; Я думаю, глядя на ColorChooser
компонент и связанный с ним ColorChooserEvent
является хорошей отправной точкой, так как это довольно простой компонент.
import javax.{swing => js}
import js.{event => jse}
import java.awt.Color
import scala.swing._
import event.Event
class ColorChooser(initialColor: Color) extends Component {
...
override lazy val peer: js.JColorChooser =
new js.JColorChooser(initialColor) with SuperMixin
peer.getSelectionModel().addChangeListener(new jse.ChangeListener {
def stateChanged(e: jse.ChangeEvent) {
publish( new ColorChangeEvent(peer.getColor))
}
})
}
case class ColorChangeEvent(c: Color) extends Event