2011-06-23 21 views
0

我有一個我正在修改的JFace SourceViewer,當用戶按下里面的ENTER鍵時,執行一些代碼,然後取消進一步的執行ENTER事件。換句話說,我不想在SourceViewer文本中回車。在jface中處理KeyEvent SourceViewer不尊重doit = false

我有一個KeyListener和一個TraverseListener設置,它們都被正確觸發,但是當我設置evt.doit = false回車仍然顯示在源查看器中。

如果我在StyledText小部件中做同樣的事情,它可以正常工作。 SourceViewer類中是否有重寫設置doit = false的內容?

回答

2

我的猜測是你的監聽器在監聽器列表的後面被觸發。請記住,StyledText而不是本機控件,因此通過在畫布上安裝偵聽器來處理鍵,鼠標,繪畫,調整大小等操作 - 請參閱StyledText.installListeners()

如果此偵聽器在您有機會設置doit = false之前運行,那麼該密鑰已經被使用。

您可能必須通過鉤住SWT.Verify事件雖然是更好的變化......

+0

鉤住VerifyKeyListener工作。謝謝! – thehiatus