1

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

@Override
public void keyPressed(KeyEvent arg0) {

}

如果是,如何?因为如果我尝试

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

它不起作用。

4

1 回答 1

1

起初我认为这与 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 事件有意义

于 2011-06-20T22:01:04.293 回答