我正在使用java嘗試製作基本遊戲,但是在使用KeyAdapter時遇到了一些麻煩。我以前使用過非常相似的格式,並且認爲我理解了它,但是這讓我很難過。Java:使用KeyAdapter的幫助
任何幫助,將不勝感激,這裏是我與
public class Board extends JPanel implements ActionListener{
Timer timer;
Tank tank = new Tank();
boolean boardset;
public Board(){
setBackground(Color.BLACK);
ImageIcon alien1ii = new ImageIcon(this.getClass().getResource("si_Alien1.png"));
Image alien1 = alien1ii.getImage();
ImageIcon alien2ii = new ImageIcon(this.getClass().getResource("si_Alien2.png"));
Image alien2 = alien2ii.getImage();
ImageIcon alien3ii = new ImageIcon(this.getClass().getResource("si_Alien3.png"));
Image alien3 = alien3ii.getImage();
timer = new Timer(5, this);
timer.start();
addKeyListener(new TAdapter());
JButton button = new JButton(new AbstractAction("hello2"){
@Override
public void actionPerformed(ActionEvent e){
boardset = false;
}
});
this.add(button);
//actual game
setFocusable(true);
setDoubleBuffered(true);
}
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.WHITE);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(tank.getTank(), tank.getx(), tank.getY(), this);
g2d.drawLine(0, (tank.getY()+25), 400, (tank.getY()+25));
Toolkit.getDefaultToolkit().sync();
g.dispose();
}
public class TAdapter extends KeyAdapter{
public void keyPressed(KeyEvent e){
tank.keyPressed(e);
System.out.println("pressedddddddddddddddddd");
}
public void keyReleased(KeyEvent e){
tank.keyReleased(e);
}
}
public void setBoardset(boolean x){
boardset = x;
}
public boolean getBoardset(){
return boardset;
}
@Override
public void actionPerformed(ActionEvent e) {
repaint();
tank.move();
}
}
工作的主要代碼在我看來,這應該是非常簡單的,現在我用這個print語句,看是否類實際上完全識別關鍵筆畫: public class TAdapter extends KeyAdapter {public void keyPressed(KeyEvent e){ tank.keyPressed(e); System.out.println(「pressedddddddddddddddddd」); }
但是,沒有輸出。所以我懷疑它根本沒有識別任何按鍵。但我不明白爲什麼。如果有人有任何建議,我將不勝感激。顯然我有更多的代碼可以分享,如果有人認爲這將有助於找出這個錯誤。
謝謝,我會檢查一下。我也忘了提及這是一個在CardHolder中使用的JPanel,我猜這可能會影響我的代碼的重點。 –
我注意到你已經讓它變得可以聚焦,但是那裏沒有什麼需要關注。 – MadProgrammer