我对线程和 GUI 完全陌生,因此我无法弄清楚在哪里调用此 EventQueue.invokeLater()
方法。
我是否应该在每个事件监听器和其他东西中调用它?调用此方法的那些“东西”是什么?如果是这样,是否有任何替代方法来调用一次应用到所有地方的方法,这样它就不会花费大量的行来将它们塞进事件调度线程?
谢谢。
最佳答案
therefore I couldn't figure out exactly where to call this EventQueue.invokeLater() method.
Swing 组件需要在 EDT 上更新,因此如果您在单独的线程中执行代码并且想要更新 GUI 组件,则只能使用 invokeLater(...)。
阅读 Concurrency 上的 Swing 教程部分获取更多信息。
作为一般规则,除非您正在使用线程,否则您只需要在创建 GUI 时使用此方法。查看 How to Make Frames 上 Swing 教程部分的 FrameDemo
一个帮助您入门的简单示例。
Am I supposed to call it in every event listeners?
不!
事件处理程序中的所有代码都已在事件调度线程 (EDT)
上执行,因此您无需调用此方法。
关于java - 何时何地调用 EventQueue.invokeLater() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28677698/