摇摆键盘没有响应

时间:2012-01-13 23:19:20

标签: java swing fullscreen keylistener

我在JFrame对象上使用KeyListener,我设置为FullScreenWindow,类似这样的代码:

class Game{

private GraphicsDevice device;
...

public void run(){
JFrame frame = new JFrame();
frame.addKeyListener(new MarioKeyListener());
device.setFullScreenWindow(frame);
}

...
}

如果我只是在main方法中创建一个Game对象并调用run(),它就可以了。 但是我想在我添加到另一个JFrame-s MenuItem的MouseAdapter的mousePressed()函数中执行此操作。结果是程序正常运行但不接受任何键盘输入。

JMenu gamemenu = new JMenu("Game");
   JMenuItem newGame = new JMenuItem("New Game");
    newGame.addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent e){
    Game g = new Game();
    g.run();    
    }               
});
gamemenu.add(newGame);

我认为我的框架对象不在焦点,但调用setFocusable(true)和requestfocusinwindow()没有帮助。 如果有人知道什么是错的或如何解决这个问题,那将非常感谢帮助...

托米

1 个答案:

答案 0 :(得分:4)

requestFocusInWindow() ..

  

请求此Component获取输入焦点,如果此Component的顶级祖先已经是焦点窗口。

你在检查返回值吗?我怀疑它失败了,因为在调用方法时新窗口不是焦点组件。

如果是这种情况,答案可能与dialog focus添加RequestFocusListener混合策略的方式类似。