更改 Scala Swing 组合框项目

Joh*_*SJA 2 swing scala scala-swing

我尝试使用三个组合框来实现日期选择,如下所示。

contents += new Label("Selected Date:")
val dayBox = new ComboBox(1 to 31)
contents += dayBox
val monthBox = new ComboBox(List("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"))
contents += monthBox
listenTo(monthBox.selection)
reactions += {
    case SelectionChanged(`monthBox`) => Dialog.showMessage(ui, "Month changed.")
}
contents += new ComboBox(2011 to 2020)
Run Code Online (Sandbox Code Playgroud)

当我更改monthBox时,如何更改dayBox中的项目?我知道 Dialog.showMessage 部分应该更改。但我想知道如何?

例如,当我更改为 Jan、Mar、May、Jul、Aug、Oct、Dec 时,该日期应显示 31,而除了 2 月的 28 之外,其他日期应显示 30。

Abh*_*kar 5

您必须使用 的对等JComboBox对象ComboBox来更改其中的项目:

scala> import swing.ComboBox
import swing.ComboBox

scala> val cb = new ComboBox(1 to 31)
cb: scala.swing.ComboBox[Int] = scala.swing wrapper scala.swing.ComboBox$$anon$1[...]

scala> cb.peer.getModel.getSize
res6: Int = 31

scala> cb.peer.setModel(ComboBox.newConstantModel(1 to 30))

scala> cb.peer.getModel.getSize
res8: Int = 30
Run Code Online (Sandbox Code Playgroud)