2

我目前正在开发我的第一个更大的 Scala Swing项目,并且我已经编写了自己的组件作为瓦片地图编辑器的一部分,用户可以在其中选择瓦片。

就像组合框在选择另一个元素时发出某种事件时,我希望这个组件用自己的案例类执行相同的操作。我还没有找到任何关于这个主题的文章或教程。

进一步注意,我怎样才能编写一个发布子组件事件的组件。这样它就可以通过它们到达。

4

1 回答 1

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
于 2012-09-23T10:11:06.633 回答