Я написал какое-то приложение и хотел добавить к нему несколько клавиатурных вводов. Мой основной класс расширяет JPanel, поэтому я могу добавить keyAdapter в конструктор. KeyAdapter - это новый класс, называемый «InputAdapter», расширяющий keyadapter с помощью метода keyPressed() и keyReleased(). нажмите или отпустите консоль, чтобы напечатать некоторую строку, например. здесь «Тест»Работа с клавиатурой не активна. Ключ-адаптер
Я не знаю, почему, но консоль не будет печатать какой-либо текст. Кроме того, когда я говорю, чтобы превратить видимость спрайтов в ложное, ничего не происходит.
Так что, я думаю, что KeyAdapter не работает должным образом, так может кто-то более внимательно изучить мои коды?
Я думаю, эта проблема не имеет ничего общего с другими реализованными классами, которые я написал, потому что при их удалении остается проблема с нерабочим клавиатурным вводом.
package com.ochs.game;
public class Game extends JPanel implements Runnable{
private static final long serialVersionUID = 1L;
public static final int WIDTH = 320;
public static final int HEIGHT = 240;
public static final int SCALE = 3;
public boolean isRunning;
public Game() {
addKeyListener(new InputAdapter());
setFocusable(true);
requestFocus();
start();
}
public void start() {
isRunning = true;
new Thread(this).start();
}
public void stop() {
isRunning = false;
}
public void run() {
init();
while(isRunning) {
update();
repaint();
try {
Thread.sleep(5);
} catch (InterruptedException e) {
System.out.println("Thread sleep failed.");
}
}
}
public void init() {
}
public void update() {
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
}
public static void main(String[] args) {
Game gameComponent = new Game();
Dimension size = new Dimension(WIDTH*SCALE, HEIGHT*SCALE);
JFrame frame = new JFrame("Invaders");
frame.setVisible(true);
frame.setSize(size);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.add(gameComponent);
}
public class InputAdapter extends KeyAdapter {
@Override
public void keyPressed(KeyEvent arg0) {
System.out.println("Test");
}
@Override
public void keyReleased(KeyEvent arg0) {
System.out.println("Test");
}
}
}
+1 для преобразования старого кода AWT в код Swing. – camickr