我目前正在开发我的第一个更大的 Scala Swing项目,并且我已经编写了自己的组件作为瓦片地图编辑器的一部分,用户可以在其中选择瓦片。
就像组合框在选择另一个元素时发出某种事件时,我希望这个组件用自己的案例类执行相同的操作。我还没有找到任何关于这个主题的文章或教程。
进一步注意,我怎样才能编写一个发布子组件事件的组件。这样它就可以通过它们到达。
也许看看其他扩展 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