gpt4 book ai didi

java - 在Java中添加KeyListener?

转载 作者:行者123 更新时间:2023-12-02 13:09:06 25 4
gpt4 key购买 nike

在我的简单程序中,球的起点是x=0, y=0。还设置了一个计时器,在每个计时器操作中,x 增加 a,y 增加 b。 a 和 b 的初始值都是 1。这样就可以了:运行程序 Moving1.java 时,球从框架的上、左移动到右、下。

但是,我也尝试添加 KeyEvents,以便可以更改 KeyEvents 中 a 和 b 的值,但它们不起作用。由于某种原因,程序似乎不会执行任何 KeyEvent。如何修复?主 KeyEvent 是 keyPressed,但我已将 b = 0 写入每个 KeyEvent,它应该对球的方向生效。

如果有人可以帮助我解决这个问题,我想我可以向 keyPressed Event 添加正确的软件,例如:

public void keyPressed (KeyEvent e) {
int KeyCode = e.getKeyCode();
if (KeyCode == KeyEvent.VK_LEFT) {
a = -1;
b = 0;
}
}

等等。

但这是我的代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Moving1 extends JPanel implements KeyListener {
int x, y;
int a = 1, b = 1;
Timer timer;


public Moving1() {
x = 0;
y = 0;
timer = new Timer(30, new TimerListener());
}

private class TimerListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
x += a; // add horizontal
y += b; // add vertical
repaint();
}
}

public void keyPressed(KeyEvent e) {
b = 0;
}

public void keyReleased(KeyEvent e) {
b = 0;
}

public void keyTyped(KeyEvent e) {
b = 0;
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillOval(x, y, 10, 10);
}

public static void main(String[] args) {
JFrame f = new JFrame("Moving1");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Moving1 m = new Moving1();
f.add(m);
f.setSize(500, 500);
f.setVisible(true);
m.timer.start();
}
}

最佳答案

您没有将 KeyListener 添加到任何内容,因此它无法处理任何事件。将以下行放入主程序中,这样事件就会发生。

f.addKeyListener(m);

关于java - 在Java中添加KeyListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44024211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com