有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java等待事件分派线程创建的GUI

我有一个类,它创建并运行一个线程,创建一个GUI。 我希望初始类在GUI关闭之前保持挂起状态(例如OK按钮)

我尝试了thread.join();,但由于GUI是在事件调度线程上创建的,因此这似乎不起作用,并且随着GUI的弹出,该类将继续

    private void CreateAndRunThread(){
        GUIMaker GM= new GUIMaker(data);
        GM.run();

        try {
            TFM.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        MessageDialog.showDialog("GM Done");
    }

线程的GUI创建:

@Override
public void run() {
    //Schedule a job for the event dispatch thread:
    //creating and showing this application's GUI.
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            //Turn off metal's use of bold fonts
            UIManager.put("swing.boldMetal", Boolean.FALSE); 
            CreateAndShowGUI(frame); //adds frame, packs and sets visible
        }
    }); 
}

共 (1) 个答案

  1. # 1 楼答案

    使用倒计时闩锁:

    CountDownLatch latch = new CountDownLatch(1);

    在inital类中调用以下命令以阻止:

    latch.await();

    关闭GUI时调用以下命令:

    latch.countDown();

    此外,你似乎没有正确地开始线程。您需要调用GM.start()方法,而不是GM.run()