Swing 对话框布局:运行方法还是构造函数?

Jac*_*aub 2 java swing multithreading

当我启动 Swing 对话框布局时,是否在类的 run 方法中进行布局会有所不同:

    公共无效运行()
    {
        框架 = 新 JFrame();
        ...
        frame.setVisible(true);
    }

或类构造函数?

    公开课
    {
        框架 = 新 JFrame();
        ...
        frame.setVisible(true);
    }
    公共无效运行()
    {
    }

谢谢

Hov*_*els 5

是的,这很重要,原因是您应该在 Swing 事件线程(事件调度线程或 EDT)上调用大多数 Swing 代码,包括创建 JFrame。为此,您通常在 Runnable 中创建您的 Swing GUI,并通过调用以下内容在事件线程上对 Runnable 进行排队:

SwingUtilities.invokeLater(new Runnable(){
  public void run() {
     // create your Swing GUI here
     frame = new JFrame();
     ...
     frame.setVisible( true );
  }
});
Run Code Online (Sandbox Code Playgroud)

例外情况是 API 中记录的 Swing 方法调用是线程安全的,例如repaint()组件的方法。