scalafx アプリケーションを書き始めたばかりで、バインディングについて質問があります。
プレゼンター クラスに接続ステータスの列挙があり、ビュー クラスのラベルで適切なアイコンを選択したいと考えています。私は基本的にjavafxの方法でバインディングを作成し、ステータスが変化するたびに適切なImageViewを選択するコンバーターを設定できますが、ScalaFXの方法で行うことは可能ですか?
多くのscalafxの例を見ましたが、まだこのようなものを見つけることができません.
ここにいくつかのコードがあります:
package view
import scalafx.beans.property.ObjectProperty
class MainWindowPresenter {
object DatabaseState extends Enumeration {
type DatabaseState = Value
val NOT_CONNECTED, IDLE, BUSY, ERROR = Value
}
val login = new ObjectProperty[String](this, "login", "awesomeloginname")
val state = new ObjectProperty[DatabaseState.DatabaseState](this, "state", DatabaseState.ERROR)
}
クラスを表示:
package view
import java.util.concurrent.Callable
import javafx.beans.binding.ObjectBinding
import collection.immutable.HashMap
import javafx.scene.control.SeparatorMenuItem
import scala.util.Random
import scalafx.beans.property.{ObjectProperty}
import scalafx.geometry.{Orientation, Insets, Pos}
import scalafx.scene.control._
import scalafx.scene.image.{ImageView, Image}
import scalafx.scene.layout._
import scalafx.Includes._
class MainWindowView extends BorderPane {
val model = new MainWindowPresenter
top = new HBox {
content = List(
new Label() {
graphic <== //somehow select imageview depending on model.state
}
)
}
private def imageFromResource(name : String) =
new ImageView(new Image(getClass.getClassLoader.getResourceAsStream(name)))
}
事前に感謝し、文法の間違いがあれば申し訳ありません - 英語は私の母国語ではありません.