在jface中处理KeyEvent SourceViewer不尊重doit = false

时间:2011-06-23 20:03:40

标签: java swt jface

我有一个我正在修改的JFace SourceViewer,我想在用户按下其中的ENTER键时捕获,执行一些代码,然后取消进一步执行ENTER事件。换句话说,我不希望在SourceViewer文本中返回回车。

我设置了一个KeyListener和一个TraverseListener,所有这些都被正确触发,但是当我设置evt.doit = false时,回车符仍然显示在源查看器中。

如果我在StyledText小部件中执行相同的操作,它可以正常工作。 SourceViewer类中是否有某些内容覆盖设置doit = false?

1 个答案:

答案 0 :(得分:2)

我的猜测是你的监听器在监听器列表中被解雇了。请记住,StyledText 不是本机控件,因此通过在画布上安装侦听器来处理键,鼠标,绘制,调整大小等的处理 - 请参阅StyledText.installListeners()

如果在您有机会设置doit = false之前运行此侦听器,则该密钥将已被使用。

通过挂钩SWT.Verify事件,你可能会有更好的改变......