KeyListener的不工作

KeyListener的不工作

本文介绍了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

  • 使用超过的KeyListener

  • 使用组件#requestFocusInWindow 组件#requestFocus的 ...

从Java文档

这篇关于KeyListener的不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 12:00