gpt4 book ai didi

java - Swing 窗口的初始化方式有什么区别?

转载 作者:行者123 更新时间:2023-11-30 06:00:15 26 4
gpt4 key购买 nike

我很好奇以下创建 Swing 窗口的方法之间的差异:

  1. 在 main() 中使用 java.awt.EventQueue.invokeLater();
  2. 在 main() 中使用 SwingUtilities.invokeLater();
  3. 根本不关心线程,只需实例化 JFrame 子类并从 main 调用 setVisible(true) ,而不将其包装在 Runnable 中;无论如何,这似乎有效。

谢谢。

最佳答案

关于线程要记住的一点是“似乎有效”与“在所有情况下都明显有效”不同。

基本规则是您不应该在事件线程之外创建 Swing/操作组件,并且应用程序的主线程位于“事件线程之外”。因此,在应用程序启动代码中,您应该在invokeLater() 中创建主窗口。

如果您使用 Swing 进行编程,我会使用 invokeLater() 的 SwingUtilities 版本。尽管我认为在当前的实现中,功能上一个只是调用另一个,但我想这在未来可能会改变。

关于java - Swing 窗口的初始化方式有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1575734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com