4

Scala+Swing で MVP アーキテクチャを実現する方法を示すよく書かれたサンプル プロジェクトを知っている人はいますか?

Scala + Swing の MVP に関するこのトピックのみを見つけました。

2 つ目の追加の質問: パブリック ゲッターを使用せずに GUI ウィジェットをビューからプレゼンターに公開するのは正しいと思いますか?

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

ただし、特性で抽象フィールドを使用する (私が提供する 2 番目のリンクで説明されているように - Scala model-view-presenter, traits ):

4

2 に答える 2

4

残念ながら、Scala Swing は、基盤となる Java Swing MVC のかなりの部分を放棄しています。いくつかの例を挙げるComboBoxと、 はモデルに直接アクセスできず ( とは異なりJComboBox)、 、 などもありませListViewん。モデルButtonのみTableを持ち、Scala 化されていないため、型付けされていません。

peerしたがって、既存の 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)

これは、Scala でモデルを作成するための小さなライブラリです。

于 2013-07-13T20:21:57.760 に答える