小编gor*_*ash的帖子

交换JPanels后没有触发KeyListener

我正在制作一个游戏而且我正在使用它,以便当用户在游戏中按下"我"时,游戏面板被设置为不可见,同时它将库存面板添加到JFrame.然后,当用户退出库存时,它将删除库存JPanel,然后将游戏JPanel设置为可见.

现在这听起来不错,但每当它删除Inventory JPanel并返回游戏JPanel时,KeyListener就会停止工作.我删除了Inventory JPanel后,甚至在游戏JPanel上重新设置了setFocusable(true)属性,但它仍然没有使KeyListener工作.

这是我的游戏Jpanel的代码:

package javavideogame;

public class Game extends JPanel implements ActionListener, Runnable
{

    public Game(MainCharacter character)
    {
        TAdapter a = new TAdapter();
        addKeyListener(a);
        setFocusable(true);
        setDoubleBuffered(true);
        setFocusTraversalKeysEnabled(false);
    }

    public void getInventoryScreen()
    {
        Main.inv = new Inventory();
        Main.inv.sayHello();
        Main.mainGame.getContentPane().add(Main.inv);
        Main.game.setVisible(false);
        Main.mainGame.validate();
    }

    public void closeInventory()
    {
        Main.inv.setFocusable(false);
        Main.mainGame.remove(Main.inv);
        Main.game.setVisible(true);
        Main.game.setFocusable(true);
    }

    public class TAdapter extends KeyAdapter
    {
        public void keyPressed(KeyEvent e)
        {
            character.keyPressed(e);
        }

        public void keyReleased(KeyEvent e)
        {
            character.keyReleased(e);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

这是库存代码:

package javavideogame;

public class Inventory …
Run Code Online (Sandbox Code Playgroud)

java swing awt keylistener

0
推荐指数
1
解决办法
3093
查看次数

标签 统计

awt ×1

java ×1

keylistener ×1

swing ×1