我有一个数据集合(模型),其中每个元素都有其视觉表示(视图),其形式为带有标签的 JPanel。这是更新 GUI 页面的方法:
public void updateGUIPage(){
guiPage.removeAll();
for(MyElement element: myCollection) {
guiPage.add(new VisualElementWhichExtendsJPanel(element);
guiPage.add(Box.createVerticalStrut(10);
}
}
每次集合更改时都会调用 updateGUIPage()。如您所见,已经创建的视觉元素被删除(正如我从书中知道的,它们稍后将被垃圾收集器销毁),并为集合中的每个元素创建新的视觉元素。我觉得这种方法不是很有效,但它总体上简化了很多应用程序(因为有很多 GUIPage,其中许多显示相同的元素,所以如果添加到第二个 GUIPage,它将从第一个中删除,这就是 Swing 的工作方式)所以,问题是:您是否允许在您的应用程序中使用这种方法,或者最好进行额外的计算并避免过度创建新对象(考虑到集合的平均大小很少会超过 100 个成员)?