gpt4 book ai didi

java - 等待事件分派(dispatch)线程创建 GUI

转载 作者:行者123 更新时间:2023-12-02 11:16:06 28 4
gpt4 key购买 nike

我有一个类,它创建并运行一个线程,该线程创建一个 GUI。我希望初始类保持暂停状态,直到 GUI 关闭(例如“确定”按钮)

我尝试了thread.join();,但由于 GUI 是在事件分派(dispatch)线程上创建的,因此这似乎不起作用,并且类会在 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
}
});
}

最佳答案

使用 CountDownLatch:

CountDownLatch 闩锁 = new CountDownLatch(1);

在初始类中调用以下代码来阻止:

latch.await();

关闭 GUI 时调用以下命令:

latch.countDown();

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

关于java - 等待事件分派(dispatch)线程创建 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50275628/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com