我寫了一些應用程序,並希望添加一些鍵盤輸入。 我的主類擴展了一個JPanel,所以我可以將keyAdapter添加到構造函數中。 keyAdapter是一個名爲「InputAdapter」的新類,通過它的keyPressed()和keyReleased()方法擴展了keyadapter。點擊或釋放控制檯應打印一些字符串,例如這裏「測試」沒有鍵盤輸入工作KeyAdapter
我不知道爲什麼,但控制檯不會打印任何文字。另外,當我告訴它將精靈的可見性變爲虛假時,也不會發生任何事情。
所以我想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