Java SwingSwingUtilities.invokeLater()
允许您在处理最后一个 AWT 事件(用户手势)后将线程排入队列以运行。
是否invokeLater()
保证等到拖放手势完成后?
Java SwingSwingUtilities.invokeLater()
允许您在处理最后一个 AWT 事件(用户手势)后将线程排入队列以运行。
是否invokeLater()
保证等到拖放手势完成后?
不,EventQueue
为 的排队实例保证两件事Runnable
:
实例将按顺序执行。
该执行将与实例排队的顺序相同。
工作方式invokeLater
是将您添加Runnable
到将在事件调度线程上按顺序执行的对象列表中。EDT 负责在您的应用程序中触发的每个事件,包括鼠标事件、按键事件、重绘等。为了invokeLater
等到拖放手势结束,DnD 手势必须阻止 EDT,直到它完全完成了。这也意味着在 DnD 手势完成之前,您的应用程序将完全没有响应。
所以,不,不会invokeLater
等到您的 DnD 手势完成。