Код: Выделить всё
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
class GamePanel extends JPanel implements Runnable{
Thread gameThread;
int x,y;
boolean up,right,down,left;
GamePanel() {
this.setPreferredSize(new Dimension(500, 500));
gameThread = new Thread(this);
this.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_D){
right = true;
}
if(e.getKeyCode() == KeyEvent.VK_S){
down = true;
}
if(e.getKeyCode() == KeyEvent.VK_A){
left = true;
}
if(e.getKeyCode() == KeyEvent.VK_W){
System.out.println("uhm");
up = true;
}
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_D){
right = false;
}
if(e.getKeyCode() == KeyEvent.VK_S){
down = false;
}
if(e.getKeyCode() == KeyEvent.VK_A){
left = false;
}
if(e.getKeyCode() == KeyEvent.VK_W){
up = false;
}
}
});
gameThread.start();
}
void update(){
// try {
// Thread.sleep(100);
// System.out.println(up);
// }
// catch (Exception e){}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.red);
g.fillRect(x,100,100,100);
g.dispose();
}
@Override
public void run() {
while(gameThread != null){
update();
repaint();
}
}
}
public class Main {
public static void main(String[] args) {
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
window.add(new GamePanel());
window.pack();
window.setLocationRelativeTo(null);
}
}
Я ожидал какого-то вывода при нажатии клавиш, но он вообще не работает.
Подробнее здесь: https://stackoverflow.com/questions/783 ... eylistener