EDT上的对象创建

时间:2015-03-11 16:02:33

标签: java swing event-dispatch-thread

我认为提出问题的最简单方法是建立它。我对EDT的某些工作方式感到有些困惑。

是否在EDT上创建了Swing组件创建的对象?

要扩展这个问题,如果我创建一个JFrame,并在其构造函数中创建对象X,Y和Z,是否还在EDT上创建了X,Y,Z?

为了进一步扩展这个问题,如果在创建X的类中,它会在网络资源上等待阻塞,那么这会阻止EDT吗?

1 个答案:

答案 0 :(得分:3)

  

是否在EDT上创建了Swing组件创建的对象?

仅当您的代码在EDT上运行时。在事件监听器中执行的代码在EDT上自动执行。

当您通过main()方法启动GUI时,它不会在EDT上运行,除非您专门将代码放在EDT上。这通常通过使用SwingUtilities.invokeLater()完成。

阅读Concurrency上的Swing教程以获取更多信息。另请阅读目录,特别是How to Make Frames部分,了解在EDT上启动代码的简单示例。

  

如果在创建X的类中,它会在网络资源上等待阻塞,那么这会阻止EDT吗?

同样,只有在EDT上执行了代码块。