【问题标题】:Why won't my character move?为什么我的角色不动?
【发布时间】:2013-01-27 01:16:25
【问题描述】:

我有我的代码。

public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == 37){
        personx -=2;
    }
    if (e.getKeyCode() == 38){
        persony -=2;
    }
    if (e.getKeyCode() == 39){
        personx +=2;
    }
    if (e.getKeyCode() == 40){
        persony +=2;
    }
    try {
        Thread.sleep((long) 0.04);
    } catch (InterruptedException e1) {
        e1.printStackTrace();
    }

代码不会移动角色。 我检查了它是否被调用并写道:

public void keyPressed(KeyEvent e) {
    System.out.println("Test");
}

但它没有打印测试。

【问题讨论】:

  • 添加监听的代码在哪里?
  • 监听器是如何连接的?
  • Thread.sleep((long) 0.04); 等同于Thread.sleep(0); 等同于// no code at all
  • 这是一个 Swing 应用程序吗? Java-EE(企业版)与您的问题有什么关系?还是Eclipse?您的问题缺少很多必要的细节。考虑告诉我们这些。
  • 对不起,我只是添加了我需要的包裹。

标签: java eclipse keylistener


【解决方案1】:

您的代码表明您正在使用 Swing 或 AWT GUI。无论哪种方式,KeyListeners 都需要:

  • 首先将 KeyListener 添加到可见 GUI 上的组件中
  • 确保该组件可聚焦
  • 并且被监听的组件具有 GUI 的焦点。

如果这是一个 Swing GUI,我建议您实际上不要使用 KeyListener,而是使用 Key Bindings,因为它们比 KeyListeners 更灵活,并且允许您在程序的多个部分中重复使用 AbstractActions。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多