2

我创建了一个 GUI 类和一个演示类。演示类正在调用 GUI。我想在不同的线程中运行 GUI。

图形界面类

public class UserGui extends JFrame {
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                UserGui frame = new UserGui();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
 }

演示类:

public class NNDemo {

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

    }
}
4

3 回答 3

2
public class UserGui extends JFrame {
    public UserGui() {}

    public void showGui() {
        setVisible(true);
    }
}

public class Demo {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
             public void run() {
                  final UserGui GUI = new UserGui();
                  GUI.showGui();
             }

        });
    } 
}
于 2012-08-04T10:05:21.933 回答
1

1. Event Dispatcher Thread(EDT)负责贵。

2. main() GUI 应用程序中的方法寿命不长,在 Event Dispatcher Thread 中调度 GUI 的构建后退出。所以现在它的 EDT 负责处理 GUI。

这就是我喜欢做上面的例子的方式:

public class UserGui extends JFrame {

    public UserGui() {

      // You can set the size here, initialize the state and handlers.
    }


}



public class Demo {

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {
             public void run() {

              new UserGui().setVisible(true);

             }

        });
    } 
}
于 2012-08-04T12:34:05.797 回答
1

以下是 Net beans 自动生成的代码,用于在单独的线程中运行框架

     public static void main(String[] args){

    /*
     * Create and display the form
     */
    java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            new BoardPlay().setVisible(true);
        }
    });
   }
于 2012-08-04T12:42:51.377 回答