Качающаяся клавиатура не отвечает - PullRequest
3 голосов
/ 14 января 2012

Я использую KeyListener для объекта JFrame, который я установил как FullScreenWindow, что-то вроде этого кода:

class Game{

private GraphicsDevice device;
...

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

...
}

И это прекрасно работает, если я просто создаю объект Game в своем основном методе и вызываюбежать().Однако я хочу сделать это внутри функции mousePressed () MouseAdapter, который я добавил в другой элемент меню JFrame-s.В результате программа работает как обычно, но не принимает ввод с клавиатуры.

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 Ответ

4 голосов
/ 14 января 2012

requestFocusInWindow() ..

Запрашивает, чтобы этот компонент получил фокус ввода, , если предок верхнего уровня этого компонента уже является сфокусированным окном.

Вы проверяете возвращаемое значение? Я подозреваю, что это терпит неудачу, потому что новое окно не является сфокусированным компонентом в момент вызова метода.

Если это так, то ответ может быть найден аналогично стратегии по добавлению в смесь RequestFocusListener.

...