我知道这是一个模糊的问题,但我会尽量让它变得清晰。当我的Java应用程序第一次启动时,它会检查文件和目录是否存在并检查是否存在Internet连接。
然后,应用程序允许用户移动到仪表板,这需要加载许多Swing组件并将其添加到后台面板。这需要时间。
我想知道如何制作它,以便在开始加载过程中,应用加载所有Swing组件图像等,以便在用户执行命令时立即显示。
我可以像这样加载所有组件:
JButton = new JButton("blah");
但是我不确定是否足以使组件立即显示,不会同时添加几个图像填充的Swing组件仍然滞后于UI线程,即使它已经如上所述“加载”了? / p>
谢谢!
答案 0 :(得分:-1)
关于组件使用
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)并使屏幕无效以调用他们的绘画方法:)。
这方面的进步将是* 运行您的设置,即您在单独的线程上检查和加载面板方法 *,这样您就不必等待顺序加载。因此,在您加载时,您可以使用匿名类
SwingUtilities.invokeLater(new Runnable(){ public void run(){
//do my display set up
}});