我目前正在开发我的第一个更大的Scala Swing project,我已经将own component编写为tile map编辑器的一部分,用户可以在其中选择切片。
正如组合框在选择另一个元素时发出某种事件一样,我希望这个组件使用我自己的case类做同样的事情。我没有找到关于这个主题的任何文章或教程。
进一步注意,我如何编写一个发布子组件事件的组件。所以它只是通过他们。
答案 0 :(得分:3)
也许看看扩展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