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

Cha*_*min 5 java swing swingworker swingutilities

启动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();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

}

kih*_*eru 7

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

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

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