在修改之前获取SWT Text组件的文本

时间:2015-09-30 17:26:39

标签: java swt listener

我有一个带有Modify监听器的SWT Text组件,当我在Text上写一些东西时,监听器代码被执行,在侦听器中我获取并打印新文本,例如,如果原始文字为"initial text",当我输入内容时,请说"initial text2",听众会打印"initial text2",这很好,但我还需要原文在文本被修改之前。

有办法做到这一点吗?我不想使用keyPressed侦听器,因为当用户使用鼠标粘贴文本时,它无法处理。

到目前为止,我的代码看起来像这样:

Text myText = new Text(parent, SWT.NONE);
myText.setText("initial text");

myText.addModifyListener(new ModifyListener() {
    public void modifyText(ModifyEvent e) {
        //Get here the original text
        String content = myText.getText(); //This line return the modified string
    }
});

1 个答案:

答案 0 :(得分:4)

倾听SWT.Verify而不是SWT.Modify

Text text = new Text(shell, SWT.BORDER);
text.addListener(SWT.Verify, new Listener()
{
    @Override
    public void handleEvent(Event e)
    {
        // Get the source widget
        Text source = (Text) e.widget;

        // Get the text
        final String oldS = source.getText();
        final String newS = oldS.substring(0, e.start) + e.text + oldS.substring(e.end);

        System.out.println(oldS + " -> " + newS);
    }
});

这将在修改之前和之后打印文本。