2011-08-26 17 views
2

我想动态地替换/更改面板的内容。我知道这样做的“标准”方式是使用CardLayout。CardLayout的替代品不包含对所含组件的引用

但是,大多数组件都很胖。他们是大数据表和巨大的图表。

我还有什么其他选择(包括第三方组件免费提供)?

回答

2

您可以删除旧内容并创建新的并读取新组件。然后致电

container.revalidate(); 
container.repaint(); 
+0

@marc M PLUS把'大数据表和巨大diagrams'到'JScrollPane' +1 – mKorbel

+0

有一个相关的例子[这里](http://stackoverflow.com/questions/7059278 /更改面板尺寸上按钮点击/ 7061696#7061696)。 – trashgod

1

只是不要使用LayoutManager。自己烤出来:

// start with fat compponent 1 
JPanel p = new JPanel(new BorderLayout()); 
FatComponent1 c1 = new FatComponent1(); 
p.add(c1, BorderLayout.CENTER); 

// ... 
// replace it e.g. after pressing a button with fat component 2 
p.removeAll(); 
FatComponent2 c2 = new FatComponent2(); 
p.add(c2, BorderLayout.CENTER); 
+0

由于使用的组件非常肥(高内存消耗,需要较长的初始化时间等) – Marcel

相关问题