Я делаю простую игру на Java для школьного проекта и использую JFrame вместе с классом, расширяющим KeyAdapter, для прослушивания входных данных. Однако, как только я переключаю фокус на другое окно (такое как Snipping Tool), а затем снова на игровое окно, KeyAdapter больше не распознает нажатия клавиш.
Я пытался запустить этот код после компиляции, и в Eclipse оба раза возникала одна и та же проблема. Я использую Windows 10, если это имеет значение, и использую версию 4.11.0 Eclipse с последним доступным пакетом Java. Я не использовал JFrames и т. Д. В прошлом и нашел очень мало контента, описывающего их использование для начинающих.
import java.awt.*;
import javax.swing.*;
public class GWindow extends Canvas {
public GWindow() {
frame = new JFrame("Dungeon120");
frame.addKeyListener(new GInputs());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(1000, 650);
frame.add(this);
frame.pack();
frame.setVisible(true);
this.setBackground(Color.black);
}
}
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class GInputs extends KeyAdapter {
public void keyPressed(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.VK_SPACE) {
Main.MainGame.TurnQueue.nextGUnit();
System.out.println("SPACE KEY PRESSED");
}
}
}
Когда программа запускается в первый раз, она запускается, как и ожидалось, с пробелами нажимает «SPACE KEY PRESSED» и выполняет метод nextGUnit (). Однако после нажатия любой клавиши ничего не происходит, когда программа теряет и восстанавливает фокус.