gpt4 book ai didi

java - 动画中的 KeyListener 问题

转载 作者:行者123 更新时间:2023-11-29 07:47:46 25 4
gpt4 key购买 nike

我正在尝试使用 ActionListenerKeyListener 制作一个简单的动画 它将接受键盘输入,即箭头键。 问题是程序未使用 KeyListener 进行编译。有人可以吗 阐明原因并可能提供解决方案的帮助。 谢谢!

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class Planegame extends JPanel implements ActionListener, KeyListener
{ //^^ this line is giving me trouble^^^^

Timer tim = new Timer(20, this);
int x = 0, y = 0, velX = 0, velY = 0;
public Planegame()
{
tim.start(); //this will start my animation
addKeyListener(this); // will activate the keylistner to watch key press
setFocusable(true);
setFocusTraversalKeysEnabled(false); //disables shift and tab key
}

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

public void actionPerformed(ActionEvent e)
{
x = x + 10; //velX
y = y + velY;
repaint();
}

public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==38)
{
velY = 1;
}
if(e.getKeyCode()==40)
{
velY = -1;
}
if (e.getKeyCode()==32) //booster power
{
velX = 3;
}
}

public void keyTyped(KeyEvent e) {}

public void keyReleased(keyEvent e) {}

public static void main(String[] args)
{
PlaneGame zed = new PlaneGame();
JFrame k = new JFrame();
k.setTitle("game");
k.setSize(600,400);
k.setVisible(true);
k.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
k.add(zed);
}
}

最佳答案

你在 keyReleased 方法的声明中有错字...

public void keyReleased(keyEvent e) {

记住,Java是区分大小写的,应该是...

public void keyReleased(KeyEvent e) {

注意KeyEvent中的大写K

你想考虑在你认为你正在覆盖的方法上使用 @Override 注释,这会在你犯了某种错误时提醒你,例如

@Override
public void keyReleased(KeyEvent e) {

也没有理由为什么 paintComponent 应该是 public,您永远不想让组件之外的某个人调用它

一如既往,我建议使用 key bindings优于 KeyListener,因为它们可以更好地控制您的组件需要能够触发关键事件的焦点级别

关于java - 动画中的 KeyListener 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24030049/

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