java - 找不到变量 e.getkeycode

标签 java swing keylistener keyevent

我是一名使用 Java 的初级程序员,我正在尝试制作一个游戏,在该游戏中,您可以将圆盘扔过移动的铁环。圆盘具有恒定的向下力,可以使用向上键向上移动;然而,在我添加任何碰撞检测之前,我开始收到一条错误消息,指出 java 编译找不到 KeyEvent 的变量 e。我在网上到处查了一下,我确信我犯了一个愚蠢的错误,但是有人可以看一下这个吗?

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.util.Random;

@SuppressWarnings("serial")
public class DiscHoopToss extends JPanel{

    int x = 710;
    int y = 150;
    int xm = -3;
    int ym = 1;
    int xr = 2;
    Random rng = new Random();
    int r = rng.nextInt((220-20)+1)+20;

  public DiscHoopToss() {
    KeyListener listener = new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {
        } 

        @Override
        public void keyPressed(KeyEvent e) {
        if (e.getKeyCode == KeyEvent.VK_UP) ym = -2;
        }

        @Override
        public void keyReleased(KeyEvent e) {
        if (e.getKeyCode == KeyEvent.VK_UP) ym = 1;
        }
    };
    setFocusable(true);
  }




  private void moveDisc() {
    x = x + xm;
    y = y + ym;

    if (y == 0) {
    y = 150;
    x = 710;
    }

    if (y == getHeight() - 20) {
    y = 150;
    x = 710;
    }

    if (r + xr < 0) xr = 2;
    if (r + xr >getHeight() - 55) xr = -2; 
    r = r + xr;
  }


  @Override
  public void paint (Graphics g) {
    super.paint(g);
    Graphics2D g2d = (Graphics2D) g;
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    g2d.drawOval(50,r,25,55);

    g2d.fillOval(x, y, 50, 20);
  }
  public static void main (String[] args) throws InterruptedException {
    JFrame frame = new JFrame("Toss the disc into the hoop!");
    DiscHoopToss game = new DiscHoopToss();
    frame.add(game);    
    frame.setSize(750, 350);
    frame.setResizable(false);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        while(true) {
        game.moveDisc();
        game.repaint();
        Thread.sleep(10);
    }
  }
}

最佳答案

Java 中的函数调用需要括号。你需要写

e.getKeyCode()

不只是

e.getKeyCode

关于java - 找不到变量 e.getkeycode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245478/

相关文章:

java - 绘制多个 JLabel 时出现问题

java - 通过 Button Action Listener 添加游戏的 JPanel(使用 KeyListener)会禁用 keylistener

java - 键盘输入处理程序不起作用

java - 检查所有数字是否出现在另一个数组中

java - 比较java中的两个字符

java - 未渲​​染的组件没有更新值

java - 带有 ascii 折叠的 elasticsearch 通配符查询

java - 如何突出显示两个形状之间的重叠区域

java - 在背景框架上使用 Java KeyListener

java - 如何将组件移动到 FlowLayout 中的下一行?