如何修改文本字段内容以响应Scala Swing中的按钮单击?
我的对话框窗口由一个文本字段和一个按钮组成。我希望在每次单击按钮(*)时,在文本字段中放置任意字符串。我面临的问题是如何通知文本字段发生了这样的事件 我试图在每次单击按钮时发布自定义消息,但我的文本字段似乎根本没有对此类消息作出反应,即使我已使用listenTo对其进行了配置 下面是一个(非)工作的最小示例,描述了我迄今为止失败的斗争:如何修改文本字段内容以响应Scala Swing中的按钮单击?,swing,scala,events,jbutton,jtextfield,Swing,Scala,Events,Jbutton,Jtextfield,我的对话框窗口由一个文本字段和一个按钮组成。我希望在每次单击按钮(*)时,在文本字段中放置任意字符串。我面临的问题是如何通知文本字段发生了这样的事件 我试图在每次单击按钮时发布自定义消息,但我的文本字段似乎根本没有对此类消息作出反应,即使我已使用listenTo对其进行了配置 下面是一个(非)工作的最小示例,描述了我迄今为止失败的斗争: import swing._ import swing.event._ case class SomethingHappened extends Event
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不是我想要的,我需要定义并发布一个真正的自定义事件)。另一方面,更新文本字段内容仍然是“单击”的理想结果。在
myButton
上尝试publish
:
val myButton: Button = Button("Click me and something will happen!") {
println(this)
myButton.publish(SomethingHappened())
}
此
在这种情况下指的是框面板
:块不是按钮
类的方法,它作为参数传递给它。太棒了!工作起来很有魅力!非常感谢你!