3
我想创建一个Swing JTextPane,当用户在其中输入文本时需要采取操作。但我也希望能够更改该窗格中的文本,而不用将其作为用户输入进行处理。我怎样才能做到这一点?如何在不触发insertUpdate()的情况下将文本插入到文档中
我想创建一个Swing JTextPane,当用户在其中输入文本时需要采取操作。但我也希望能够更改该窗格中的文本,而不用将其作为用户输入进行处理。我怎样才能做到这一点?如何在不触发insertUpdate()的情况下将文本插入到文档中
如果您不让更新事件触发,那么根据实际实施情况,您的UI可能不会更新。所以我同意,通过与事件处理程序交谈,让它知道下一次更改将是一个程序化更改,可能会更好。类似这样的:
try {
listener.setProgrammaticChange(true);
// change document
}
finally {
listener.setProgrammaticChange(false);
}
您可以侦听'KeyEvents',然后只查看文档。或者你可以建立一个内部标志告诉你的听众,它正在被程序而不是用户修改。 – mercutio
我更喜欢@ mercutio的第二个想法。 KeyEvents可能是骗人的,尤其是因为还有其他非关键的方式与文本组件交互。 –
*改变该窗格中的文本,而不会将其作为用户输入*作为用户处理该更改我不认为这是可能的通过API ......与此说,也许你的代码逻辑有点歪曲,因为你应该修复整个文本他们输入,并且比通过'insertString(..)'重置该文本,例如,该调用当然会触发'insertUpdate(..)',但由于文本先前已更改为匹配约束,它应该通过所有验证因此不会做任何更改,即'insertString(..)'不称为IMO。类似这样的东西:http://stackoverflow.com/a/13721186/1133011 –