我对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() {
部分
答案 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:可能会出现意外行为。