9

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

1 に答える 1