开始挥杆应用程序的最佳实践

启动java swing应用程序的最佳实践方法是什么? 也许有另一种方法可以做到这一点。

我想知道我是否必须使用SwingUtilities类来启动应用程序(可能性)(第一种可能性)。

public class MyFrame extends JFrame { public void createAndShowGUI() { this.setSize(300, 300); this.setDefaultCloseOperation(EXIT_ON_CLOSE); // add components and stuff this.setVisible(true); } public static void main(String[] args) { // First possibility MyFrame mf = new MyFrame(); mf.createAndShowGUI(); // Secound possibility SwingUtilities.invokeLater(new Runnable() { @Override public void run() { MyFrame mf = new MyFrame(); mf.createAndShowGUI(); } }); } 

}

只有第二种方式是正确的。 必须仅在事件派发线程中创建和访问Swing组件。 看看摆动中的并发性 。 相关报价:

为什么初始线程不是简单地创建GUI本身? 因为几乎所有创建Swing组件或与Swing组件交互的代码都必须在事件派发线程上运行。 此限制将在下一节中进一步讨论。

所以是的,你需要使用invokeLater()