不幸的是,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)
这是一个在 Scala 中创建模型的小型库。