Я совершенно не понимаю, как использовать KeyListener
в апплете (хорошо, у меня есть хорошая идея). Я знаю, что это как-то связано с установкой фокуса на апплете, но я понятия не имею, как это сделать. Моя программа отлично работает как приложение, но она просто не воспринимает ввод с клавиатуры как апплет. Если бы кто-то мог помочь мне, это было бы здорово.
Мой код:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Window extends JApplet {
static Ship ship;
static ColorPanel panel;
static boolean up=false, down=false, left=false, right=false;
public static class PanelListener implements KeyListener{
public void keyPressed(KeyEvent e){
switch(e.getKeyCode()) {
case 38: ship.setMoving(true); down = true;break;
case 40: ship.setMoving(true); up = true;break;
case 37: ship.setMoving(true); left = true;break;
case 39: ship.setMoving(true); right = true;break;
case 32: ship.setFiring(true); break;
case 49: ship.setSwitching(true); ship.switchOrdinance(49); break;
case 50: ship.setSwitching(true); ship.switchOrdinance(50); break;
case 51: ship.setSwitching(true); ship.switchOrdinance(51); break;
case 52: ship.setSwitching(true); ship.switchOrdinance(52); break;
case 83: if(ship.shieldState()){ship.shieldOff();}else{ship.shieldOn();}
}
ship.setDirection(up,down,left,right);
ship.setVelocity(3);
}
public void keyReleased(KeyEvent e){
switch(e.getKeyCode()) {
case 38: ship.setMoving(false); down = false; break;
case 40: ship.setMoving(false); up = false; break;
case 37: ship.setMoving(false); left = false; break;
case 39: ship.setMoving(false); right = false; break;
case 32: ship.setFiring(false); break;
case 49: ship.setSwitching(false); break;
case 50: ship.setSwitching(false); break;
case 51: ship.setSwitching(false); break;
case 52: ship.setSwitching(false); break;
default: ship.setMoving(false); ship.setFiring(false); ship.setSwitching(false); left=false; right=false; up=false; down=false;
}
ship.setDirection(up,down,left,right);
if(!up || !down || !right || !left){
ship.setVelocity(0);
}
}
public void keyTyped(KeyEvent e){
}
}
public void init(){
Container pane;
ship=new Ship();
panel = new ColorPanel(Color.black, 1340, 640);
panel.sendShip(ship);
pane=getContentPane();
pane.add(panel);
addKeyListener(new PanelListener());
}
}