更改 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() {部分。

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

前两个代码片段是严格等效的。第三个根本不是:您应该与 EDT(事件调度线程)中的所有 Swing 图形元素(除了少数例外)进行交互。您的最后一个示例在 EDT 之外创建并显示了一个 JFrame:它可能会出现意外行为。

相关内容

  • 没有找到相关文章

最新更新