Мое диалоговое окно состоит из текстового поля и кнопки. Я хотел бы, чтобы произвольная строка была помещена в текстовое поле при каждом нажатии кнопки (*). Проблема, с которой я столкнулась, заключается в том, как сообщить текстовое поле, что такое событие произошло?Как изменить содержимое текстового поля в ответ на нажатие кнопки в Scala Swing?
Я попытался опубликовать собственное сообщение при каждом нажатии кнопки, но текстовое поле, похоже, вообще не реагирует на такое сообщение, хотя я его настроил с помощью listenTo.
Вот (не) работает минимальный пример, описывающий мою неудачную борьбу до сих пор:
import swing._
import swing.event._
case class SomethingHappened extends Event {
println("Yes, something indeed has been published!")
}
class MyDialog extends Dialog {
contents = new BoxPanel(Orientation.Vertical) {
val myButton = Button("Click me and something will happen!") {
publish(SomethingHappened())
}
contents += new TextField {
listenTo(myButton)
reactions += {
case SomethingHappened() =>
// This actually never happens... :(
peer.setText("Voilà!")
println("You didn't expect it coming, did you?")
}
}
contents += myButton
}
open()
}
new MyDialog()
рука помощи будет очень ценится здесь. Благодаря!
(*) А «нажатие кнопки» является заполнителем для более сложного события и используется здесь только для упрощения цели (учитывая, что ButtonClicked не то, что я ищу, мне нужно определить и опубликовать действительно настраиваемое событие). С другой стороны, обновление содержимого текстового поля по-прежнему является желаемым результатом этого «щелчка».
Отлично! Работает как шарм! Большое спасибо! –