我已經看到這里有很多關于這個主題的問題,但我認為它們都與我的問題不同。我想創建一個簡單的游戲。我想在按下 w、a、s 或 d 時移動藍色方塊。以下代碼不會引發任何錯誤,所以我不知道為什么它不起作用。
import java.awt.Color;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Main implements KeyListener{
static JLabel ufo;
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(1080, 720);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(true);
frame.setLayout(null);
JPanel panel = new JPanel();
panel.setSize(1080, 720);
panel.setLayout(null);
panel.setBackground(Color.darkGray);
ufo = new JLabel();
ufo.setBounds(0,0,100,100);
ufo.setBackground(Color.blue);
ufo.setOpaque(true);
panel.add(ufo);
frame.add(panel);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@Override
public void keyTyped(KeyEvent e) {
switch(e.getKeyChar()) {
case 'a': ufo.setLocation(ufo.getX()-10, ufo.getY());
break;
case 'w': ufo.setLocation(ufo.getX(), ufo.getY()-10);
break;
case 's': ufo.setLocation(ufo.getX(), ufo.getY() 10);
break;
case 'd': ufo.setLocation(ufo.getX() 10, ufo.getY());
break;
}
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
}
uj5u.com熱心網友回復:
唯一需要的是將 Main 的實體作為鍵偵聽器傳遞給 frame。
public static void main(String[] args) {
[...]
frame.setVisible(true);
frame.addKeyListener(new Main());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/523943.html
標籤:爪哇摇摆按键监听器
