1

Java SwingSwingUtilities.invokeLater()允许您在处理最后一个 AWT 事件(用户手势)后将线程排入队列以运行。

是否invokeLater()保证等到拖放手势完成后?

4

2 回答 2

5

不,EventQueue为 的排队实例保证两件事Runnable

  • 实例将按顺序执行。

  • 该执行将与实例排队的顺序相同。

于 2012-07-26T22:27:33.663 回答
1

工作方式invokeLater是将您添加Runnable到将在事件调度线程上按顺序执行的对象列表中。EDT 负责在您的应用程序中触发的每个事件,包括鼠标事件、按键事件、重绘等。为了invokeLater等到拖放手势结束,DnD 手势必须阻止 EDT,直到它完全完成了。这也意味着在 DnD 手势完成之前,您的应用程序将完全没有响应。

所以,不,不会invokeLater等到您的 DnD 手势完成。

于 2012-07-26T23:57:31.010 回答