Я работаю над школьным проектом, который имеет два изображения ... хороший парень и плохой парень. Я использую таймер, чтобы отправить плохого парня к хорошему парню, и это работает находкой, но я должен использовать KeyListener, чтобы переместить хорошего парня в сторону или от плохого парня .... и затем в конце концов атаковать но это будет позже.Почему мой KeyListener не звонит?
Я просто пытаюсь заставить моего «хорошего парня» перейти на KeyListener и его не получить. Понятия не имею почему.
Вот мой конструктор, который вызывает мой EventListener в моей главной панели:
//monster 1 coordinates
int mon1x = 0;
int mon1y = 300;
KeyListenerAction myKeyActionListener = new KeyListenerAction();
public BlobFighterPanel()
{
addKeyListener(myKeyActionListener);
this.setPreferredSize(new Dimension(1300,600)); //set size of main panel
//add button
startButton.addActionListener(startListener);
add(startButton);
}
Тогда ниже у меня KeyListener, но его не вызывался:
public class KeyListenerAction implements KeyListener {
public void keyPressed (KeyEvent event)
{
switch(event.getKeyCode())
{
case KeyEvent.VK_LEFT:
goodx -= 10;
break;
case KeyEvent.VK_RIGHT:
System.out.println("Right");
goodx += 10;
break;
}
repaint();
}
public void keyTyped(KeyEvent event){}
public void keyReleased(KeyEvent event){}
}
Что я делаю неправильно? Почему мой KeyListener не называется?
Я думаю, что это именно то, что мне нужно. Когда я добавил код setFocusable (true); Затем я смог переместить своего «монстра», но после того, как я нажму кнопку «Пуск», фокус переходит к кнопке. Могу ли я настроить фокус на нажатие кнопки на другой панели? – user2788749
Вы можете, но есть лучшее решение ... – MadProgrammer