【问题标题】:Key Listener not working关键监听器不工作
【发布时间】:2012-06-17 22:13:12
【问题描述】:
 public void paint (Graphics g)
{
    bufferGraphics.setColor (Color.black);
    bufferGraphics.clearRect (0, 0, dim.width, dim.width);
    while (input != KeyEvent.VK_SPACE)
    {
        bufferGraphics.fillRect (0, 0, dim.width, dim.height);
    }

    bufferGraphics.drawImage (track, 0, 0, dim.width, dim.height, this);
    bufferGraphics.setFont (new Font ("Calibri", Font.PLAIN, 25));
    bufferGraphics.drawString ("Level: " + level, 30, 30);
    bufferGraphics.drawImage (car, 620, myCarY, 70, 120, this);
    bufferGraphics.drawImage (opponent, 415, oppCarY, 70, 120, this);
    move ();

这是现在的代码。执行时,我得到一个冻结的空白窗口,甚至无法关闭。

【问题讨论】:

  • 您是否打算将“false”的值分配给“run”?
  • 是的,我是初学者,对不起
  • 试一试:while (!run) { ...} 语句“run = false”将“false”的值赋给“run”。
  • 为什么你的 keyReleased 分配 Unicode 为空?尝试像其他人一样将其设为e.getChar(),除非有特定原因。
  • 如果这样做,程序会卡在 for 循环中

标签: java applet keylistener event-listener


【解决方案1】:

你的问题在你的 if 语句中。

if(run = false)

永远不会执行,因为 assignment 返回被分配的值(例如 false)。

您需要将= 更改为==。

您可能还想将无限 for 循环更改为 while 循环,例如

while(input != KeyEvent.VK_SPACE) {
}

还要确保将您的 KeyListener 添加到您的类中(在 ctor 中)

addKeyListener(new MyKeyListener())

我刚刚测试了代码,它工作正常。

【讨论】:

  • 如果这样做了,那么程序就会陷入无限循环,并且在按下空格键时永远不会中断
  • 我是初学者,不熟悉Frame/JFrame。 KeyListener 只是我代码底部的一个单独的类
  • @KyleWilson 我能做的不多,只是测试了代码,它工作了。
  • 嗯,没有任何变化,它有效吗?我得到的只是一个冻结的白色窗口
猜你喜欢
  • 2017-05-17
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
相关资源
最近更新 更多