提出“改变” jFormattedTextField 上的侦听器
我的程序中有一个 jFormattedTextField,当 jFormattedTextField 值有效更改时,我需要更新 jLabel 的文本。
实际上 jFormattedTextField 获取一个数字,jLabel 显示该数字与另一个数字之间的差异。
我目前通过监听 jFormatted 文本的“FocusLost”事件来做到这一点。
我该怎么做?
I have a jFormattedTextField in my program and I need to update a jLabel's text when jFormattedTextField value has been changed validly.
Actually jFormattedTextField gets a number and jLabel displays diffrence between this number and another number.
I currently do this by listenning to "FocusLost" event of jFormatted text.
How can i do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为 formattedField 的属性“值”注册一个 PropertyChangeListener
不要使用 DocumentListener 或 FocusListener:前者通知得太频繁(在解析发生之前,在每个键键入上),后者太脆弱。
register a PropertyChangeListener for the property "value" to the formattedField
Do not use DocumentListener nor FocusListener: the former is notified too often (on every keytyped, before parsing happened) the latter is too brittle.
最简单的方法可能是使用附加到文本字段的
javax.swing.event.DocumentListener
。然后,当用户键入时,可以更新标签。我不记得确切的顺序,但侦听器的
insertUpdate()
可能会在验证格式化文本字段之前调用。因此,您可能还需要检查侦听器中的有效数字。Probably the easiest way to do this is to use a
javax.swing.event.DocumentListener
that you attache to the text field. Then, as the user types, the label can be updated.I don't remember the exact sequence, but the listener's
insertUpdate()
may be called before the formatted text field is validated. So, you may also need to check for valid numbers in your listener too.