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 楼答案
使用倒计时闩锁:
CountDownLatch latch = new CountDownLatch(1);
在inital类中调用以下命令以阻止:
latch.await();
关闭GUI时调用以下命令:
latch.countDown();
此外,你似乎没有正确地开始线程。您需要调用GM.start()方法,而不是GM.run()