【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 2016-06-16
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多