【问题标题】:Stuck on Java 2D beginners tutorial坚持 Java 2D 初学者教程
【发布时间】:2015-08-18 07:21:27
【问题描述】:

我是 Java 新手,我正在尝试使用 Java 2D 来熟悉该语言。我用 Python/Pygame 做了同样的事情来制作简单的游戏(蛇、扫雷等)而没有太多的困难,但 Java 2D 似乎要复杂得多。

我正在关注this site 上的教程,但在 SimpleEx.java 代码示例中我无法弄清楚发生了什么:

EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            BasicEx ex = new BasicEx();
            ex.setVisible(true);
        }
});

看起来在 .invokeLater() 方法调用中声明了一个新方法。这个 run() 方法是一个单独的参数被传递给 invokeLater() 吗?还是在将对象传递给方法之前将此方法添加到新的 Runnable() 对象中?

【问题讨论】:

  • 通读this,它只是一个anonymous object
  • 你的第二个想法是对的。如您所见,hereRunnable 是一个需要实现public void run 方法的接口。你可以在@Override-Tag 看到它。 invokeLater 方法需要一个对象 Runnable,并且可以在此参数部分中定义这个新对象。所以run-Method 是invokeLater-Method 的新Runnable-Object 的实现。

标签: java swing graphics 2d java-2d


【解决方案1】:

run()是runnable接口的主要方法。 在invokeLater() 中,您传递新的Runnable 对象,该对象必须实现自己的run() 方法。因此,您当前所做的是创建匿名 Runnable 类并将其传递给 EventQueue 方法。 这种运行 GUI 应用程序的方式使用提供的 run() 方法在单独的线程中启动您的 APP,并且用于并发原因 - 比如不要在其他后台操作中阻止 GUI

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2011-01-29
    • 2013-06-28
    • 2015-02-23
    • 2011-06-03
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多