繁体   English   中英

如何预加载Swing组件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM