如何限制ModifyListener仅用于用户交互

时间:2012-02-21 21:16:38

标签: java swt jface

我有一个带有ModifyListener的文本框 在已实现的modifyText(ModifyEvent e)中,我执行了所需的功能。

问题在于,每次文本更改都会触发此事件。

如果文本被编程改变(通过代码设置文本),我不希望它触发。 我希望它只在用户更改代码时触发(我不能使用keylistener,因为它也会在用户点击箭头按钮等时触发,它也不会检测用户是否复制和粘贴文本)

3 个答案:

答案 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.....

    }
});