我已經使用Eclipse插件Visual Editor來構造Java Swing接口。由於我不是代碼所見即所得的大風扇(UI)編輯器產生,我想優化它,當我注意到,該編輯器使用延遲加載這樣實現的所有元素:Swing和延遲加載組件
private JPanel getSomePanel()
{
if (somePanel == null)
{
somePanel = new JPanel();
// construct the panel
}
return somePanel;
}
我知道,當有問題的對象沒有被立即使用時,延遲加載被用來獲得更好的性能。然而,對於大多數用戶界面來說,這樣做的意義不大,因爲例如窗口通常應該從頭開始顯示所有組件。我的情況也是如此,在這種情況下,我有一個相當簡單的清晰佈局,當窗口顯示時,預計所有組件都存在。
Visual Editor在根容器的構造函數中添加了一個initialize
調用,其中構建了根面板並添加了所有其他元素(通過延遲加載)。所以實際上所有的組件都是在構建根容器時創建的,只是嵌套到多個方法中。
在這種情況下,實際上是否有任何用於延遲加載的用法?我應該在哪些UI案例中使用延遲加載?當使用延遲加載時,我是否甚至允許直接訪問成員變量 - 或者我應該每次調用getter?
謝謝!
你是說我應該懶惰地填充數據元素?我究竟該怎麼做? – poke 2010-08-25 20:00:29
不。他說如果您需要從數據庫加載數據並使用它填充表格或下拉列表,那麼應該使其在單獨的線程中運行,以便在加載時不會阻塞EDT。它不適用於任何類型的默認數據,只有需要來自備用源的數據可能需要一段時間才能加載,並且您不希望在加載時阻止UI。 – 2010-08-25 20:03:36
啊,好吧,這很有道理,謝謝:) – poke 2010-08-25 20:06:49