gpt4 book ai didi

java - 有没有办法知道 JPanel 是否已完成加载其内容?

转载 作者:行者123 更新时间:2023-11-30 03:37:38 27 4
gpt4 key购买 nike

我正在编写一个在运行时将卡片(JPanel)添加到 CardLayout 的应用程序。问题在于卡上的某些组件加载速度比其他组件快,导致其出现故障并且在显示之前无法正确渲染。

我希望它在第一次显示时准备好。

我已经通过加载屏幕暂时解决了这个问题,这使得线程 hibernate 了 1500 毫秒。有没有更准确的方法来知道面板上的所有内容是否都已加载?

private void showLoadingScreen() {
final Component glassPane = getGlassPane();
setGlassPane(loadingPanel);
loadingPanel.setVisible(true);

Thread thread = new Thread() {
public void run() {
try {;
Thread.sleep(1500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setGlassPane(glassPane);
}
};

thread.start();
}

最佳答案

在使用 SwingWorker 创建的后台线程中执行所有文件加载和数据操作。然后在执行SwingWorker之前,添加一个PropertyChangeListener。当 PropertyChangeEvents newValue 为 SwingWorker.StateValue.DONE 时,您就知道所有后台工作已完成,可以显示 GUI。

请查看Concurrency in Swing教程,例如,请查看 this answer类似的问题。

关于java - 有没有办法知道 JPanel 是否已完成加载其内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27474752/

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