Программисты JAVA общаются здесь
Anonymous
Как использовать KeyListener
Сообщение
Anonymous » 20 апр 2024, 10:08
Код: Выделить всё
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);
}
}
KeyListener вообще не работает, я пробовал переключить его положение и отключить поток, а также пробовал много других методов, но он вообще не работает.
Я ожидал какого-то вывода при нажатии клавиш, но он вообще не работает.
Подробнее здесь:
https://stackoverflow.com/questions/783 ... eylistener
1713596934
Anonymous
[code]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); } } [/code] KeyListener вообще не работает, я пробовал переключить его положение и отключить поток, а также пробовал много других методов, но он вообще не работает. Я ожидал какого-то вывода при нажатии клавиш, но он вообще не работает. Подробнее здесь: [url]https://stackoverflow.com/questions/78357283/how-to-use-a-keylistener[/url]
0 Ответы
15 Просмотры
Последнее сообщение Anonymous
22 июл 2024, 17:05
KeyListener не работает так, как я хочу, для клавиш со стрелками?
Anonymous »
01 окт 2024, 21:50 » в форуме
JAVA
Я создаю игру «Змея» и реализовал класс KeyListener, который слушает, когда пользователь нажимает клавиши со стрелками или клавиши WASD.
В Snake, когда вы нажимаете клавишу движения, змея продолжит двигаться, если вы просто нажмете клавишу движения...
0 Ответы
8 Просмотры
Последнее сообщение Anonymous
01 окт 2024, 21:50
Не могу пойти прямо на KeyListener
Anonymous »
11 апр 2025, 14:07 » в форуме
JAVA
Я делаю пространство захватчика для школьного проекта, и когда я пытаюсь использовать ключ D, чтобы сделать его правильно, он не делает PNG правильно, это код для перемещения png
public PannelloGioco() {
setBackground(Color.BLACK);
navicella = new...
0 Ответы
2 Просмотры
Последнее сообщение Anonymous
11 апр 2025, 14:07
Java KeyListener не уволен?
Anonymous »
13 апр 2025, 22:55 » в форуме
JAVA
Обычно я не программирую в Java, но для этого проекта мне нужно. Я получил все, что работает, кроме ключевого слушателя. Я хочу, чтобы программа отреагировала всякий раз, когда нажимается клавиша (не имеет значения, какой из них).
public class...
0 Ответы
3 Просмотры
Последнее сообщение Anonymous
13 апр 2025, 22:55
Деактивировать KeyListener задержать Java [Duplicate]
Anonymous »
21 апр 2025, 15:46 » в форуме
JAVA
Я написал небольшую программу с jlabel в ней, и как только я нажимаю с A / S / D, этикетка движется. Проблема в том, что когда я нажимаю и держу, например, W, метка перемещает только один пиксель, а затем продолжает двигаться, пока я снова не отпущу...
0 Ответы
5 Просмотры
Последнее сообщение Anonymous
21 апр 2025, 15:46