Scala-Swing中的MVP模式

4

有没有人知道一些在Scala+Swing中实现MVP架构的优秀案例?

我只找到了以下关于Scala + Swing中MVP的主题:

另外一个问题是:您认为将GUI小部件从视图公开给Presenter而不使用公共getter方法是否正确:

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

但是使用特质中的抽象字段(如我提供的第二个链接所述 - Scala模型视图控制器,特质):

2个回答

4
很遗憾,Scala Swing放弃了很多基础的Java Swing MVC。举几个例子:ComboBox没有直接访问模型(不像JComboBox),ListViewButton等也是如此。只有Table有模型,但不符合Scala。因此未分类。
如果要使用现有的Java模型,则需要进入Scala Swing小部件的peer领域。如果要将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)

这是一个用于在Scala中创建模型的小型库。 此处 提供下载。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接