我有一个我正在修改的JFace SourceViewer,我想在用户按下其中的ENTER键时捕获,执行一些代码,然后取消进一步执行ENTER事件。换句话说,我不希望在SourceViewer文本中返回回车。
我设置了一个KeyListener和一个TraverseListener,所有这些都被正确触发,但是当我设置evt.doit = false
时,回车符仍然显示在源查看器中。
如果我在StyledText小部件中执行相同的操作,它可以正常工作。 SourceViewer类中是否有某些内容覆盖设置doit = false?
答案 0 :(得分:2)
我的猜测是你的监听器在监听器列表中被解雇了。请记住,StyledText
不是本机控件,因此通过在画布上安装侦听器来处理键,鼠标,绘制,调整大小等的处理 - 请参阅StyledText.installListeners()
。
如果在您有机会设置doit = false
之前运行此侦听器,则该密钥将已被使用。
通过挂钩SWT.Verify
事件,你可能会有更好的改变......