【发布时间】:2012-11-26 21:16:33
【问题描述】:
我想创建一个 Swing JTextPane,当用户在其中输入文本时它会采取行动。但我也希望能够更改该窗格中的文本,而不会将更改视为用户键入。我该怎么做?
【问题讨论】:
-
你可以收听
KeyEvents,然后只看文档。或者你可以设置一个内部标志,告诉你的听众它当前正在被程序而不是用户修改。 -
我更喜欢@mercutio 的第二个想法。按键事件可能具有欺骗性,尤其是因为还有其他非按键方式可以与文本组件交互。
-
更改该窗格中的文本,而不将其视为用户输入我认为这不可能通过 API ... 话虽如此,您的代码逻辑可能是有点歪斜,因为您应该修复他们输入的整个文本,而不是通过
insertString(..)重置该文本,例如,该调用当然会触发insertUpdate(..),但由于文本先前已更改为匹配约束,它应该通过所有验证,因此没有进行任何更改,即insertString(..)不称为 IMO。类似的东西:stackoverflow.com/a/13721186/1133011
标签: java swing jtextpane documentlistener documentfilter