我有一个正在修改的JFace SourceViewer,我想在用户在其中按ENTER键时捕获它,执行一些代码,然后取消ENTER事件的进一步执行。换句话说,我不希望在SourceViewer文本中出现回车符。
我设置了一个KeyListener和一个TraverseListener,它们都可以正确地触发,但是当我设置evt.doit = false时,回车仍然显示在源代码查看器中。
如果我在StyledText小部件中执行相同的操作,它将正常工作。是不是SourceViewer类中发生了覆盖doit=false设置的事情?
发布于 2011-06-24 05:16:01
我的猜测是,您的侦听器在侦听器列表中被触发到较晚。请记住,StyledText不是本机控件,因此可以通过在画布上安装侦听器来处理按键、鼠标、绘制、调整大小等操作-请参阅StyledText.installListeners()。
如果这个侦听器在您有机会设置doit = false之前运行,那么这个密钥就已经被使用了。
不过,通过连接到SWT.Verify事件,您可能会有更好的更改...
https://stackoverflow.com/questions/6459931
复制相似问题