本文介绍了KeyListener的不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
由于某些原因,我的KeyListener只是不响应的关键pressed事件。
如果它很重要,我在Ubuntu 12.04。应打印键pressed每当关键是pressed,但事实并非如此。
这里的code:
进口java.awt.event中。*;
进口的javax.swing *。
进口java.awt.Graphics;公共类DisplayPanel继承JPanel
{
私人瓷砖[] []瓷砖;
私人生物[]动物;
私人地下城地牢;
私人Player播放器; 公共DisplayPanel(地牢地牢,瓷砖[] []瓷砖,生物[]生物,Player播放器)
{
this.tiles =砖;
this.creatures =动物;
this.dungeon =地牢;
this.player =玩家;
addKeyListener(新DungeonKeyListener());
requestFocus()方法;
} 保护无效paintComponent(图形G)
{
INT最大=(的getWidth()&所述;的getHeight())?的getWidth():的getHeight();
对于(平铺[]行:砖)
{
对于(瓷砖瓷砖:行)
{
如果(瓦= NULL&放大器;!&安培;瓷砖瓷砖的instanceof)
{
tile.draw(克,最大/ tiles.length,最大/瓦[0]。长度);
}
}
}
对于(生物生物:生物)
{
如果(生物= NULL&放大器;!&安培;生物的instanceof生物)
{
creature.draw(克,最大/ tiles.length,最大/瓦[0]。长度);
}
} 如果(玩家= NULL&放大器;!&安培;球员的instanceof播放器)
{
player.draw(克,最大/ tiles.length,最大/瓦[0]。长度);
}
} 私有类DungeonKeyListener扩展KeyAdapter
{
公共无效调用keyReleased(KeyEvent e而)
{
的System.out.println(键pressed!);
。地牢preSS(e.getKey code());
重绘();
}
}
}
解决方案
- 呼叫
super.paintComponent方法
(不涉及您的问题,但会解决一些问题以后) - 请组件可聚焦 - <$c$c>Component#setFocusable$c$c>
- 使用超过
的KeyListener
- 使用
组件#requestFocusInWindow
在组件#requestFocus的
...
从Java文档
这篇关于KeyListener的不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!