簡體   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