如何在JPanel CTRL + m中使用keyPressed?

时间:2011-06-20 17:04:27

标签: swing jpanel onkeypress

我正在尝试在文本编辑器组件上实现JPopupMenu。它应该在CTRL + m上激活。我可以在

中做到这一点
@Override
public void keyPressed(KeyEvent arg0) {

}

如果是,怎么样?因为如果我尝试

if(arg0.isControlDown()&&arg0.getKeyChar()=='m')

它不起作用。

1 个答案:

答案 0 :(得分:1)

起初我认为这与CTRL + M与回车符/换行符相同,但事实并非如此。尝试:

if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_M) {
    System.out.println("pressed");
    menu.setVisible(true);
}

我也无法使用带有e.getKeyChar()的字符来工作,但是getKeyCode()对我有效。很好,它的工作原理。但我是那种必须知道原因的人。所以我找到了this

  

KEY_PRESSED和KEY_RELEASED事件   不用于报告   字符输入。因此,价值观   这种方法返回的是有保证的   仅对KEY_TYPED有意义   事件