java - 何时何地调用 EventQueue.invokeLater() 方法

标签 java multithreading swing event-dispatch-thread code-duplication

我对线程和 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/

相关文章:

java - EclipseLinke :No resource files named META-INF/services/javax. persistence.spi:找不到 PersistenceProvider

java - AspectJ - 使用aspectJ 获取生成lambda 函数的父线程的线程id

java - 将套接字输出发送到 GUI 时出现问题

java - 从 JComboBox 获取输入值

ios - GCD、NSThread 或 NSOperationQueue 哪个最好?

java - 我想让我的 java 程序在 Windows 的任务栏和 Mac 的 Dock 中都有一个图标

java - 如何重用httpclient连接获取多个小文件

java - 来自命令行的 Eclipse Javadoc 编译器警告

java - Linux (Ubuntu 12.04) 的多线程性能很糟糕?

c、创建线程和线程函数