【发布时间】:2010-08-25 19:45:45
【问题描述】:
我使用了Eclipse 插件Visual Editor 来构建Java Swing 接口。由于我不是所见即所得 (UI) 编辑器生成的代码的忠实粉丝,因此我想对其进行优化,当我注意到编辑器使用延迟加载实现所有元素时,如下所示:
private JPanel getSomePanel ()
{
if ( somePanel == null )
{
somePanel = new JPanel();
// construct the panel
}
return somePanel;
}
我知道延迟加载用于获得更好的性能,当有问题的对象没有立即使用时。然而,对于大多数用户界面来说,这不太有意义,例如,一个窗口通常应该从一开始就显示它上面的所有组件。在我的情况下也是这种情况,我有一个相当简单的清晰布局,在显示窗口时所有组件都应该存在。
Visual Editor 在根容器的构造函数中添加了一个initialize 调用,其中构造了根面板并添加了所有其他元素(通过延迟加载)。所以实际上所有组件都是在构建根容器时就创建的,只是嵌套在多个方法中。
在这种情况下,延迟加载实际上有什么用吗?在哪些 UI 情况下我应该使用延迟加载?当使用延迟加载时,我是否真的可以直接访问成员变量 - 还是应该每次都调用 getter?
谢谢!
【问题讨论】:
标签: java swing lazy-loading