获取SWT Text组件修改前的文本
Get text of SWT Text component before modification
我有一个带有修改侦听器的 SWT 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
}
});
监听 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);
}
});
这将打印修改前后的文本。
我有一个带有修改侦听器的 SWT 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
}
});
监听 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);
}
});
这将打印修改前后的文本。