有谁知道一些写得很好的示例项目,展示了如何在 Scala+Swing 中实现 MVP 架构?
我在 Scala + Swing 中只找到了关于 MVP 的这些主题:
第二个额外的问题:您认为,不使用公共(public) getter 将 GUI 小部件从 View 公开给演示者是正确的:
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模型,你需要进入peer
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 中创建模型的小型库。
关于swing - Scala-Swing 中的 MVP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17631080/