让JScrollPane不响应键盘事件
问题描述:
我把一个JPanel jpanel放在一个JScrollPane jscrollpane里面,jpanel响应键盘事件,比如上下左右键移动里面的图象。问题是此时jscrollpane的滚动条会跟着动,因为键盘事件会传递到jscrollpane,那我在jpaneld的键盘事件处理函数里把键盘事件毁掉,像下面这样:
public void keyPressed(KeyEvent keyevent)
{
...//事件处理,略
keyevent.consume();
}
这样按键盘方向键时jscrollpane的滚动条就不会跟着动了。但是问题又来了,原来定义的菜单快捷键不响应了。定义菜单快捷键的代码如下:
jmenuitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2, InputEvent.ALT_MASK));
本来是打算在jpanel按ALT+2后图象放大2倍,由于jpanel处理键盘事件后把KeyEvent销毁了,键盘事件不能发送给菜单,不知道这个情况怎么处理?是否可以在keyevent.consume()之前手动把事件传给菜单处理,那调用什么函数?或者有其它的办法...