在启用了preventNewLines标志的情况下,按Enter键后,我需要阻止TextViewer创建新行。
我有这段代码:
TextViewer myTextViewer = new TextViewer (myGroup, SWT.V_SCROLL
| SWT.FULL_SELECTION
| SWT.BORDER | SWT.WRAP);
myTextViewer.setDocument(new Document(myText));
StyledText myStyledText = myTextViewer.getTextWidget();
myStyledText.addTraverseListener(new TraverseListener() {
@Override
public void keyTraversed(TraverseEvent e) {
if (e.detail == SWT.TRAVERSE_RETURN) {
if (preventNewLines)
e.doit = false;
}
}
});
但它无论如何都会产生新线......我做错了什么? 有人可以给我发正确的代码如何预防吗?
修改 好的,我通过运气找到了答案,我希望它对其他人有帮助,也许......
myStyledText.addVerifyKeyListener(new VerifyKeyListener() {
@Override
public void verifyKey(VerifyEvent e) {
if (preventNewLines &&
(e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR)) {
e.doit = false;
}
}
});
答案 0 :(得分:0)
这里已经回答了https://stackoverflow.com/a/7589098/18445
@Override
public boolean isNavigationEvent(ColumnViewer viewer, Event event) {
return event.keyCode == SWT.CR || event.keyCode == SWT.KEYPAD_CR;
}