2012-11-12 32 views
8

Tôi cần phải ngăn chặn TextViewer làm mới dòng sau khi tôi nhấn phím Enter trong trường hợp ngăn chặnNewLines cờ được kích hoạt.Làm thế nào để ngăn chặn dòng mới trong StyledText sau khi Enter ép

Tôi có đoạn mã này:

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; 
     } 
    } 
}); 

Nhưng nó làm cho dòng mới anyway ... Tôi đang làm gì sai? Ai có thể vui lòng gửi cho tôi mã chính xác như thế nào để ngăn chặn nó?

EDIT: OK, tôi đã tìm thấy câu trả lời bằng cách may mắn, tôi hy vọng nó giúp cho người khác, có lẽ ...

myStyledText.addVerifyKeyListener(new VerifyKeyListener() { 

    @Override 
    public void verifyKey(VerifyEvent e) { 
     if (preventNewLines && 
      (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR)) { 
      e.doit = false; 
     } 
    } 
}); 
+1

Bạn nên trả lời câu hỏi của riêng mình rồi kiểm tra câu hỏi đó như đã trả lời vì nó vẫn là câu hỏi mở. – GenericJam

Trả lời

0

này đã được trả lời ở đây https://stackoverflow.com/a/7589098/18445

@Override 
public boolean isNavigationEvent(ColumnViewer viewer, Event event) { 
    return event.keyCode == SWT.CR || event.keyCode == SWT.KEYPAD_CR; 
} 
Các vấn đề liên quan