当前位置: 首页 > 面试题库 >

是否可以不使用EDT而在Java Swing中执行主动渲染?

石臻
2023-03-14
问题内容

我正在研究使用Buffer
Strategy
和Javadoc中描述的以下技术:

// Main loop
while (!done) {
 // Prepare for rendering the next frame
 // ...

 // Render single frame
 do {
     // The following loop ensures that the contents of the drawing buffer
     // are consistent in case the underlying surface was recreated
     do {
         // Get a new graphics context every time through the loop
         // to make sure the strategy is validated
         Graphics graphics = strategy.getDrawGraphics();

         // Render to graphics
         // ...

         // Dispose the graphics
         graphics.dispose();

         // Repeat the rendering if the drawing buffer contents 
         // were restored
     } while (strategy.contentsRestored());

     // Display the buffer
     strategy.show();

     // Repeat the rendering if the drawing buffer was lost
 } while (strategy.contentsLost());

}

这将是巨大的,以避免EDT和invokeLaterinvokeAndWait执行动画时。

我的问题:

  • 如果这是在Swing应用程序中,我们是否不必担心将调用传递show到EDT?
  • 谁能在Swing应用程序中看到任何其他问题吗?

问题答案:

一般来说,没有。尽管结果可以接受,但在事件分发线程(EDT)之外的其他线程上进行绘制会导致出现不希望的伪影。此示例演示了一些折衷方案。我更喜欢安排使用javax.swing.Timer在EDT上绘图,但其他方法也是可行的。同样,您选择的顶级Container可能已经实现了Buffer
Strategy



 类似资料:
  • 我正在使用Spring,我有一个计划任务,可以对数据库进行一些操作。我发现这个任务是在每个池上执行的,而我只希望执行一次。例如,在我的日志文件中,我读到: 我有这样的配置: 这就是任务: 可能吗?谢谢

  • 问题内容: 我必须转换一个传递查询的MSSQL存储过程: 这不起作用。我敢肯定,而不是MySQL的命令,但也不管用。 有谁知道是否有可能为MySQL提供类似JavaScript的功能? 问题答案: EXECUTE是MySQL中的有效命令。MySQL参考手册

  • 问题内容: 我正在寻找一种在客户端(即在浏览器中)进行traceroute的方法。 据我所知,不可能通过Javascript或Flash发送具有任意TTL值的ICMP,UDP或TCP数据包。我知道Flash允许通过Actionscript中的Socket类进行TCP连接,但是它对于traceroute实现似乎没有用。 是开发浏览器插件的唯一解决方案吗? 编辑 :我刚刚发现它已经用Java小程序完成

  • 通过on_delete选项,Django提供了各种方法来处理具有被删除对象外键的对象。 我想知道是否有一种方法,我可以做类似的事情,但有条件的。下面是一个场景。我正在使用Django1.5新的自定义用户模型,我的所有用户都有一个网站的外键。像这样: 如果一个站点被删除了,那么我更愿意删除所有链接到该站点的非超级用户(即类似KASKADE的behavoir),因为它们的存在现在已经没有意义了。但如果

  • 有没有办法调用cucumber来exe一些用Java编写的特性文件?(不是作为Junit) 我理解您可以通过mvn或Gradle运行Cucumber-JVM作为Junit测试的一部分。 但我不想将此BDD测试作为构建过程的一部分运行。我想在配置项的最后一步调用cucumber,它将执行Ruby、Cpp、Java中的任何步骤定义

  • 指定:这就是表的样子。 希望得到的结果是由Hibernate为我构建的SQL查询: