Java 无法从StyledText强制转换为JComponent

Java 无法从StyledText强制转换为JComponent,java,eclipse,casting,key-bindings,jcomponent,Java,Eclipse,Casting,Key Bindings,Jcomponent,我有一个扩展TextEditor的编辑器类,需要捕获我正在使用键绑定的Ctrl+右箭头键按下事件。但问题是我无法将编辑器转换为JComponent,而keylistener不允许我捕获关键笔划组合 到目前为止,我已经尝试了以下代码 JComponent component = (JComponent) getViewer().getTextWidget(); component.getInputMap().put(KeyStroke.getKeyStroke(java.awt.event

我有一个扩展TextEditor的编辑器类,需要捕获我正在使用键绑定的Ctrl+右箭头键按下事件。但问题是我无法将编辑器转换为JComponent,而keylistener不允许我捕获关键笔划组合

到目前为止,我已经尝试了以下代码

JComponent component = (JComponent) getViewer().getTextWidget();
    component.getInputMap().put(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_KP_RIGHT, java.awt.event.InputEvent.CTRL_DOWN_MASK),"actionMapKey");
    component.getActionMap().put("actionMapKey", new AbstractAction(){
        public void actionPerformed(ActionEvent a){
            System.out.println("hello");
        }
    });

StyledText
是swt的一部分,
JComponent
是java的一部分。您不能将
StyledText
强制转换为
JComponent
,因为
JComponent
不是
StyledText的超类,我希望会有办法绕过它,因为当我使用KeyListener事件时,如果(e.keyCode==SWT.ARROW\u RIGHT&((e.stateMask&SWT.CTRL)>0)){System.out.println(“world”)}状态掩码始终为零。您可以使用。如果您正在使用swt组件,请在整个代码中使用它们。我个人不建议混合swt和swings。我尝试过使用这个监听器,但问题是e.stateMask总是为零。当我按下Ctrl+->(e.statemack&SWT.Ctrl)!=0)时,应该是真的。这正是我所做的。谢谢你的帮助
public void keyReleased(KeyEvent e){if(e.keyCode==SWT.ARROW_RIGHT&&(e.stateMask&SWT.CTRL)==SWT.CTRL){System.out.println(“hello world”);}