更改Scala Swing组合框项
我尝试使用三个组合框实现日期选择,如下所示更改Scala Swing组合框项,swing,scala,scala-swing,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 += mont
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)
当我更改monthBox时,如何更改dayBox中的项目?我知道Dialog.showMessage部分应该更改。但我想知道怎么做
例如,当我更改为1月、3月、5月、7月、8月、10月、12月时,日期应显示为31日,而除2月28日之外的其他日期应显示为30日。您必须使用
组合框的对等JComboBox
对象来更改其中的项目:
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
您必须使用组合框
的对等JComboBox
对象来更改其中的项目:
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
从带有Java7Swing的scala版本2.11.1开始,这会导致编译器崩溃。一种可能的解决方法是重新创建整个组合框,将其重新插入布局并调用此.revalidate()。从带有Java 7 Swing的scala 2.11.1版开始,这会导致编译器崩溃。一种可能的解决方法是重新创建整个组合框,将其重新插入布局并调用此.revalidate()。