[英]How to preload Swing components
我知道这是一个模糊的问题,但我会尽力使之尽可能清楚。 当我的Java应用程序首次启动时,它会进行一些检查以查看文件和目录是否存在,并检查Internet连接。
然后,该应用程序允许用户继续前进至仪表板,这需要加载许多“ Swing”组件并将其添加到“背景面板”中。 这需要时间。
我想知道如何做到这一点,以便在开始加载过程中,该应用程序加载所有Swing组件图像等,以便在用户执行命令时立即显示它们。
我可以像这样加载所有组件:
JButton = new JButton("blah");
但是我不确定是否足以使这些组件立即显示,即使同时已经如上所示加载了多个图像填充的Swing组件,也不会同时滞后于UI线程吗?
谢谢!
关于组件使用
setVisible(false)
例如
public class myParentPanel extends JPanel{
public myParentPanel{
//add all the child components
//Do what ever takes along time
setVisible(false); //this then makes in invisible but still
//allows all the set up code to run
}
public void showParent(){
setVisible(true);
invalidate();
}
}
然后创建一种方法,使它们在需要时可见。 因此,可以调用构造函数中的所有设置,然后在调用方法时说:
drawWindow()
然后只需调用setVisible(true)并使屏幕无效即可调用其绘画方法:)。
在此方面的一项进步将是* 运行您的设置,即在单独的线程上检查和加载panel方法,因此您不必等待顺序加载。 因此,在加载时,您可以使用匿名类
SwingUtilities.invokeLater(new Runnable(){ public void run(){
//do my display set up
}});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.