我正在尝试通过文本编辑器组件实现 JPopupMenu。它应该在 CTRL+m 上激活。我可以在里面做吗
@Override
public void keyPressed(KeyEvent arg0) {
}
如果是,如何?因为如果我尝试
if(arg0.isControlDown()&&arg0.getKeyChar()=='m')
它不起作用。
我正在尝试通过文本编辑器组件实现 JPopupMenu。它应该在 CTRL+m 上激活。我可以在里面做吗
@Override
public void keyPressed(KeyEvent arg0) {
}
如果是,如何?因为如果我尝试
if(arg0.isControlDown()&&arg0.getKeyChar()=='m')
它不起作用。
起初我认为这与 CTRL+M 与回车/换行相同,但事实并非如此。尝试:
if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_M) {
System.out.println("pressed");
menu.setVisible(true);
}
我也无法使用带有 e.getKeyChar() 的字符来工作,但 getKeyCode() 对我有用。太好了,它有效。但我是那种必须知道为什么的类型。所以我发现了这个:
KEY_PRESSED 和 KEY_RELEASED 事件不用于报告字符输入。因此,保证此方法返回的值仅对 KEY_TYPED 事件有意义