加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala-Swing中的MVP

发布时间:2020-12-16 10:04:09 所属栏目:安全 来源:网络整理
导读:有没有人知道一些写得很好的示例项目,展示了如何在 Scala Swing中实现MVP架构? 我在Scala Swing中只找到了关于MVP的这个主题: Improving MVP in Scala Scala model-view-presenter,traits 还有第二个问题:你怎么想,将GUI小部件从视图暴露给不使用公共gett
有没有人知道一些写得很好的示例项目,展示了如何在 Scala Swing中实现MVP架构?

我在Scala Swing中只找到了关于MVP的这个主题:

> Improving MVP in Scala
> Scala model-view-presenter,traits

还有第二个问题:你怎么想,将GUI小部件从视图暴露给不使用公共getter的演示者是正确的:

def getNextButton(): Reactor // this code in view will be accessed by presenter to setup clickHandler

但在特征中使用抽象字段(如我提供的第二个链接 – Scala model-view-presenter,traits中所述):

解决方法

不幸的是,Scala Swing放弃了相当多的底层Java Swing MVC.举一些例子:ComboBox没有直接访问模型(与JComboBox不同),ListView,Button等也没有.只有Table有模型,但没有Scala’fied,所以没有类型.

因此,如果要使用现有的Java模型,则需要进入Scala Swing小部件的对等字段.如果你想要MVC和你自己的模型,那么你必须手动进行接线.

import scala.swing._
import Swing._

val m  = new javax.swing.DefaultButtonModel
val cb = new CheckBox    ("Check" ) { peer.setModel(m) }
val tb = new ToggleButton("Toggle") { peer.setModel(m) }
val f  = new Frame {
  contents = new FlowPanel(cb,tb)
  pack().centerOnScreen()
  open()
}

m addChangeListener ChangeListener { _ =>
  println(s"Selected? ${m.isSelected}")
}

m.setSelected(true)

This is一个小型库,用于在Scala中创建模型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读