我有一个带有ModifyListener的文本框 在已实现的modifyText(ModifyEvent e)中,我执行了所需的功能。
问题在于,每次文本更改都会触发此事件。
如果文本被编程改变(通过代码设置文本),我不希望它触发。 我希望它只在用户更改代码时触发(我不能使用keylistener,因为它也会在用户点击箭头按钮等时触发,它也不会检测用户是否复制和粘贴文本)
答案 0 :(得分:3)
您可以在致电ModifyListener
之前取消注册setText(..)
,然后重新注册。
答案 1 :(得分:0)
textBox.addKeyListener(...)和textBox.addMouseListener(...)而不是ModifyListener怎么样?
答案 2 :(得分:0)
您可以尝试使用Focusout监听器....然后您将获得用户仅输入一次的值。
Text text;
text.addListener(SWT.FocusOut, new Listener() {
@Override
public void handleEvent(Event arg0) {
//Your code here.....
}
});