Java 无法从StyledText强制转换为JComponent
我有一个扩展TextEditor的编辑器类,需要捕获我正在使用键绑定的Ctrl+右箭头键按下事件。但问题是我无法将编辑器转换为JComponent,而keylistener不允许我捕获关键笔划组合 到目前为止,我已经尝试了以下代码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
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”);}