3
嗨,我是新來的Java和我試圖移動一個JPanel(播放器)跨JFrame使用箭頭鍵,但由於某種原因,它不工作。我相信這是因爲keyPressed方法在按下按鍵時沒有響應,但我真的不知道。keyPressed方法不工作Java
這是球員類的代碼:
import java.awt.Color;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
public class Player extends JPanel implements KeyListener{
int x=0,y=0;
public Player(){
this.setBounds(x, y, 9, 9);
this.setOpaque(true);
this.setBackground(Color.red);
this.setFocusable(true);
addKeyListener(this);
}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if(key == KeyEvent.VK_UP){
this.setBounds(x, x-9, 9, 9);
}else if(key == KeyEvent.VK_DOWN){
this.setBounds(x, y+9, 9, 9);
}else if(key == KeyEvent.VK_RIGHT){
this.setBounds(x+9, y, 9, 9);
}else if(key == KeyEvent.VK_LEFT){
this.setBounds(x-9, y, 9, 9);
}
}
public void keyReleased(KeyEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
}
提前感謝!編輯: 這是JFrame的代碼: import javax.swing.JFrame;
public class Cave {
public static void main(String[] args) {
JFrame frame = new JFrame("Cave Generator");
frame.setBounds(0, 0, 0, 0);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Player p = new Player();
frame.getContentPane().add(p);
}
}
看來,你可能會需要重新粉刷爲了反映這些變化,「框架」。 – SomeJavaGuy
那你有沒有調試過它?該方法是否被調用,但帶有意外的密鑰代碼?你是否在調用setBounds,但沒有發生任何事情?你真的需要自己做診斷工作。 –
我做過調試,並沒有調用該方法 –