更改NetBeans默认JFrame主函数有什么区别吗?

时间:2014-04-03 21:51:50

标签: java swing object netbeans jframe

我对Java GUI缺乏经验,因此我正在使用NetBeans设计器来满足我的大部分需求。这是NetBeans生成的main函数:

public static void main(String args[]) {
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MyClass().setVisible(true);
            }
        });

    }

如果我改变它,我有任何实质性的区别:

public static void main(String args[]) {
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    MyClass gui = new MyClass();
                    gui.setVisible(true);
                }
            });

        }

甚至是这样:

public static void main(String args[]) {
    MyClass gui = new MyClass();
    gui.setVisible(true);
}

我在问,因为我在创建的一些成员变量中遇到了一些问题,我需要在main函数中使用它们,它不会让我和我也不理解java.awt.EventQueue.invokeLater(new Runnable() { public void run() {部分

2 个答案:

答案 0 :(得分:3)

第一个和第二个选项完全相同,第三个选项相当危险。关于invokeLater的观点是将GUI对象放入等待操作的事件循环中。有关详细信息,请参阅http://docs.oracle.com/javase/7/docs/api/java/awt/EventQueue.html

答案 1 :(得分:3)

前两个代码段完全相同。第三个根本不是:你应该与the EDT (Event Dispatch Thread)的所有Swing图形元素(除少数例外)进行交互。您的上一个示例创建并显示了EDT之外的JFrame:可能会出现意外行为。