Ich habe ein problem. Mein JFrame gibt keine Inputs weiter. Habe so wie immer den Keylistener hinzugefügt. Doch es hat mir kein Output gegeben. Liegt das vielleicht daran das ich ein anderes Frame davor geöffnet hatte?
[CODE lang="java" title="Keylistener"]public class KeyManager implements KeyListener {
private boolean[] keys, justPressed, cantPress;
public boolean up, down, left, right;
public KeyManager() {
keys = new boolean[256];
justPressed = new boolean[keys.length];
cantPress = new boolean[keys.length];
}
public void tick() {
for (int i = 0; i < keys.length;i++) {
if (cantPress && !keys) {
cantPress = false;
} else if(justPressed) {
cantPress = true;
justPressed = false;
}
if (!cantPress && keys) {
justPressed = true;
}
}
up = keys[KeyEvent.VK_W];
down = keys[KeyEvent.VK_S];
right = keys[KeyEvent.VK_D];
left = keys[KeyEvent.VK_A];
}
public boolean keyJustPressed(int keyCode){
if(keyCode < 0 || keyCode >= keys.length)
return false;
return justPressed[keyCode];
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("Key pressed");
if (e.getKeyCode() < 0 || e.getKeyCode() >= keys.length)
return;
keys[e.getKeyCode()] = true;
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("Key pressed");
if (e.getKeyCode() < 0 || e.getKeyCode() >= keys.length)
return;
keys[e.getKeyCode()] = false;
}
}[/CODE]
[CODE lang="java" title="Main"] keyManager = new KeyManager();
frame.requestFocus();
frame.addKeyListener(keyManager);[/CODE]
[CODE lang="java" title="Keylistener"]public class KeyManager implements KeyListener {
private boolean[] keys, justPressed, cantPress;
public boolean up, down, left, right;
public KeyManager() {
keys = new boolean[256];
justPressed = new boolean[keys.length];
cantPress = new boolean[keys.length];
}
public void tick() {
for (int i = 0; i < keys.length;i++) {
if (cantPress && !keys) {
cantPress = false;
} else if(justPressed) {
cantPress = true;
justPressed = false;
}
if (!cantPress && keys) {
justPressed = true;
}
}
up = keys[KeyEvent.VK_W];
down = keys[KeyEvent.VK_S];
right = keys[KeyEvent.VK_D];
left = keys[KeyEvent.VK_A];
}
public boolean keyJustPressed(int keyCode){
if(keyCode < 0 || keyCode >= keys.length)
return false;
return justPressed[keyCode];
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("Key pressed");
if (e.getKeyCode() < 0 || e.getKeyCode() >= keys.length)
return;
keys[e.getKeyCode()] = true;
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("Key pressed");
if (e.getKeyCode() < 0 || e.getKeyCode() >= keys.length)
return;
keys[e.getKeyCode()] = false;
}
}[/CODE]
[CODE lang="java" title="Main"] keyManager = new KeyManager();
frame.requestFocus();
frame.addKeyListener(keyManager);[/CODE]