【问题标题】:How to make own Scala UI Events如何制作自己的 Scala UI 事件
【发布时间】:2012-09-15 01:41:49
【问题描述】:
我目前正在开发我的第一个更大的 Scala Swing project,并且我已经编写了我的 own component 作为瓦片地图编辑器的一部分,用户可以在其中选择瓦片。
就像一个组合框在选择另一个元素时发出某种事件时,我希望这个组件用我自己的案例类执行相同的操作。我没有找到任何关于这个主题的文章或教程。
进一步说明,我怎么也可以编写一个发布子组件事件的组件。这样它就可以通过它们到达。
【问题讨论】:
标签:
swing
events
scala
scala-swing
【解决方案1】:
也许看看其他扩展 scala-swing 的项目。比如有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