![](/img/trans.png)
[英]Prevent Swing GUI from becoming unresponsive when invoking a method which is both accessing Swing components and is time-consuming
[英]Reusing Swing components which are time-consuming to initialize
如果我的應用程序中有一個龐大的Swing組件需要很長時間來初始化,並且想要同時在我的GUI中的不同位置顯示該組件,我最好如何做到這一點?
GUI用戶必須能夠與組件的不同副本進行交互(例如,它們可以用作鏡像)。
假設有人可能想要動態顯示該組件的副本,具體取決於GUI用戶的輸入(也就是說,我們不希望預先加載同一組件的許多副本)。
您需要更改組件以像時尚模型一樣訪問數據。 每個組件都需要指向同一個模型,該模型將為數據提供服務並執行一次密集型任務而不是多次。
此外,初始化正在減慢GUI,然后它聽起來像你需要一個啟動畫面或進度條,任務移出EDT。
有沒有什么方法可以把重型初始化代碼拉出來,可能是'...工廠'類?
我將創建一個組件的一個實例(比如說HeavyComponent)和一個自定義類,例如JPanel和引用組件。 我們把它命名為MyContainer。 在MyContainer的paintComponent()上,我將原始組件繪制到BufferedImage或使用heavyComponentReference.paint(g)。 然后在MyContainer上點擊我將交換組件替換面板與HeavyComponent的實例並放置在HeavyComponent新實例MyContainer的舊位置。
同時在我的GUI中的不同位置顯示此組件...無需創建同一組件的新副本...用戶必須能夠與不同的副本進行交互
沒門。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.