启动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组件。参见concurrency in swing。相关报价:



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

关于java - 启动 Swing 应用程序的最佳实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18976990/

10-11 20:48