Jac*_*aub 2 java swing multithreading
当我启动 Swing 对话框布局时,是否在类的 run 方法中进行布局会有所不同:
公共无效运行()
{
框架 = 新 JFrame();
...
frame.setVisible(true);
}
或类构造函数?
公开课
{
框架 = 新 JFrame();
...
frame.setVisible(true);
}
公共无效运行()
{
}
谢谢
是的,这很重要,原因是您应该在 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()组件的方法。