我们有一个带有套接字通信和其他线程的 Swing 应用程序。我们知道我们需要使用 SwingUtilities.invokeLater()
从其他线程更新 Swing 显示。但是 JOptionPane
怎么样?我们是否需要从其他线程使用 SwingUtilities.invokeLater()
来启动 JOptionPane
?
如果是,如何使用JOptionPane来屏蔽程序?
如果答案是否定的,JOptionPane不属于GUI显示吗?
最佳答案
if the answwer is yes, how to use JOptionPane to block the procedure
答案是肯定的。您应该访问/修改/... Event Dispatch Thread 上的所有 Swing 组件。因此,您的后台线程需要使用某种机制来调用 EDT 上的 JOptionPane
。使用 SwingUtilities#invokeLater
是一个选项,但不是阻塞选项。
将 SwingUtilities#invokeAndWait
用于阻塞行为。此方法将等到可运行对象完成后再返回。
关于java - 哪个线程启动 JOptionPane?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13863713/