【问题标题】:What's wrong with this use of EventQueue.invokeLater?使用 EventQueue.invokeLater 有什么问题?
【发布时间】:2018-06-08 01:57:43
【问题描述】:

所以我试图弄清楚这个蛇游戏是如何运作的:

http://zetcode.com/tutorials/javagamestutorial/snake/

当我将代码复制到编译器中时,我在这一块代码中遇到了很多错误:

public static void main(String[] args) {

     EventQueue.invokeLater(() -> {
         JFrame ex = new Snake();
         ex.setVisible(true);
     });
  }
}

以下是错误:(第 27 行是 EventQueue.invokeLater 行)

Error: illegal start of expression (Line 27)
Error: illegal start of expression (Line 27)
Error: illegal start of expression (Line 27)
Error: ';' expected (Line 27)
Error: illegal start of type (Line 30)
Error: class, interface, or enum expected (Line 32)

【问题讨论】:

  • 请提供您收到的确切错误消息。
  • 可能是错误的java版本?你用 java 8 吗?

标签: java swing eventqueue


【解决方案1】:

您需要至少有 Java 8 才能使用 Lambda(就像您在本示例中所做的那样)。

对于 Java 7,您需要求助于使用 Runnable 而不是 Lambda

EventQueue.invokeLater(new Runnable() {
    public void run() {
      JFrame ex = new Snake();
      ex.setVisible(true);
    }
});

【讨论】:

  • 哦,好的,谢谢。有没有另一种方法来编码它以便它与java 7一起使用?我的计算机类出于某种原因使用 java 7
  • @LFTY 我添加了一个代码示例。但由于您正在学习教程,其余代码很可能也使用了 Java 8 功能。
  • 您好,我不知道如何联系您,所以这是唯一的方法。我试图创建一种方法来在游戏结束时弹出重播按钮,但我无法正确完成。我该怎么做?
猜你喜欢
  • 2014-06-26
  • 2011-03-08
  • 2011-01-09
  • 2018-10-13
  • 2011-04-24
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
相关资源
最近更新 更多