【发布时间】:2011-11-18 08:46:10
【问题描述】:
我正在使用最新的 Eclipse 和 GWT Designer 来用 Java 制作一个摇摆应用程序。 工具自动生成的我的应用程序窗口(即 javax.swing.JFrame)中的主要功能如下所示:
/* launch the application */
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
AppWindow window = new AppWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
这似乎有很多关于可能只是这样的噪音:
public static void main(String[] args) {
try {
AppWindow window = new AppWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
我读到在某些情况下需要 EventQueue.InvokeLater 技术,另一个问题是在哪里使用它here。
我的问题比较简单;为什么在这里的代码生成器中自动执行此操作?为什么 main 应该快速返回,让事件队列稍后创建应用程序窗口?阻塞不是重点吗?为什么 JFrame 自动生成的设计器要做这个 EventQueue 的东西?我试图在启动和显示表单方面看到一些差异,无论这段代码是用更简单的方式还是用更难的方式完成,我只能暂时得出结论,这有一些在初学者制作的微型演示应用程序中看不到的好处像我一样,也许在现实世界中基于大型复杂 Jframe 的类中,这种延迟/排队策略有一些好处?
【问题讨论】:
-
因为我似乎需要它很多,所以我在 Eclipse 中制作了一个模板,以便将这个样板事件队列内容轻松放入代码中。 il 然后是控制空间,扩展到上面的整个混乱。
-
我在 NetBeans 中使用了类似的方法。
-
这不是关于“快速离开 main”,而是关于将创作推到 EDT 上。