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