Изменение элементов Scala Swing ComboBox
Я попытался реализовать выбор даты, используя три ComboBox, как показано ниже.
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)
Как я могу изменить элементы в dayBox, когда я изменяю monthBox? Я знал, что часть Dialog.showMessage должна быть изменена. Но мне интересно, как?
Например, когда я изменяю на январь, март, май, июль, август, октябрь, декабрь, день должен показывать 31, в то время как 30 для других, кроме 28 для февраля.
1 ответ
Решение
Вы должны использовать пэр 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