Java 此代码是否在EDT上运行?

Java 此代码是否在EDT上运行?,java,swing,Java,Swing,给定以下代码: public class MainFrame extends JFrame{ public MainFrame() throws HeadlessException { super(); this.setSize(500, 400); this.setVisible(true); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); JButton myButton = new JButt

给定以下代码:

public class MainFrame extends JFrame{

  public MainFrame() throws HeadlessException {
    super();
    this.setSize(500, 400);
    this.setVisible(true);
    this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

    JButton myButton = new JButton("Test");

    this.add(myButton);

    this.pack();

  }

  public static void main(String[] args) {     
    new MainFrame();
  }

}
构造函数中的代码是否在EDT上运行。我想是的,因为它是在JFrame的一个实例中执行的,但我需要另一种意见

继续这个想法,如果我要创建其他控件,例如在main()函数中,该代码不会在EDT上


谢谢大家!

否。您正在从主线程上运行的
main
方法调用构造函数

添加常用的样板文件:

public static void main(String[] args) {     
    java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
        new MainFrame();
    }});
}

另外,扩展不需要的类(包括
JFrame
JPanel
Thread
)通常也是个坏主意。无需声明
HeadlessException
,因为它是未选中的。

否。您正在从主线程上运行的
main
方法调用构造函数

添加常用的样板文件:

public static void main(String[] args) {     
    java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
        new MainFrame();
    }});
}

另外,扩展不需要的类(包括
JFrame
JPanel
Thread
)通常也是个坏主意。无需声明
HeadlessException
,因为它是未选中的。

因此,如果我在main()中调用SwingUtilities.invokeLater来实例化帧,可以吗?我在您编辑的示例中看到您使用了EventQueue。这是针对SwingUtilities的建议吗?@Bogdan
SwingUtilities.invokeLater
只调用
EventQueue.invokeLater
,如前所述Ok。知道了。谢谢大家@在Java1.1中,AWT没有
EventQueue.invokeLater
,因此Swing扩展(原样)必须使用hack实现
invokeLater
。在我看来,从Java 1.2开始,在处理AWT的
EventQueue
时,不需要引用
SwingUtilities
的垃圾箱。OTOH,
javax.swing
中有相当一部分实际上与AWT有关,无论您是否使用swing,因此不管怎么说,它都是一团乱,您选择哪一个可能都不会有很大的区别。因此,如果我在main()中调用SwingUtilities.invokeLater要实例化框架,可以吗?我在您编辑的示例中看到您使用了EventQueue。这是针对SwingUtilities的建议吗?@Bogdan
SwingUtilities.invokeLater
只调用
EventQueue.invokeLater
,如前所述Ok。知道了。谢谢大家@在Java1.1中,AWT没有
EventQueue.invokeLater
,因此Swing扩展(原样)必须使用hack实现
invokeLater
。在我看来,从Java 1.2开始,在处理AWT的
EventQueue
时,不需要引用
SwingUtilities
的垃圾箱。OTOH,
javax.swing
中有相当一部分实际上与AWT有关,无论您是否使用swing,因此不管怎么说,它都是一团乱,您选择哪一个都不会有很大的区别。