gpt4 book ai didi

java - 在 Thread.sleep() 之前创建的 JDialog 在 sleep 完成后显示

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

我刚刚在尝试向 swing 应用程序添加印记时遇到问题,该印记在应用程序关闭时会显示五秒钟。

我计划在主框架关闭时打开一个仅包含简单图像的 JDialog。

我得到了一个显示 JDialog 的函数(我删除了所有不需要的内容)。

public static void show() { 

JDialog d = new JDialog();
JLabel l = new JLabel(new ImageIcon(MainController.class.getClass().getResource("/path/to/endlogo.png")));
d.add(l);
d.setVisible(true);

}

该函数由以下代码片段调用(在我的主窗口的窗口监听器中)

@Override
public void windowClosing(WindowEvent e) {

show();

try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}

}

问题是该对话框在五秒后显示(即当窗口已经关闭并且应用程序退出时,我测试了它,并且在应用程序启动时运行时它在五秒后完美显示)。

你们知道一种相反的方法吗?

最佳答案

您正在阻塞 UI 线程。基本上不要这样做...如果您想稍后在 UI 线程上执行某些操作,请使用 Swing 计时器或类似的东西。

黄金法则:

  • 不要在 UI 线程上执行任何耗时的操作
  • 仅在 UI 线程上访问 UI

关于java - 在 Thread.sleep() 之前创建的 JDialog 在 sleep 完成后显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27278816/

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