【发布时间】:2014-03-01 14:52:51
【问题描述】:
我有一个复杂的 JPanel,它有各种嵌套的 JPanel 作为组件。
我想将其中一个嵌套面板替换为新面板。但我无法让顶级面板重新绘制新组件,除非我将它们全部删除并重新添加:
JPanel topLevel = new JPanel();
JPanel upperPane = new JPanel();
JPanel lowerPane = new JPanel();
JPanel infoPane = new JPanel();
upperPanel.add(infoPane);
topLevel.add(UpperPane);
topLevel.add(lowerPane);
// 上面的(伪代码)显示得很好。 //现在我想:
infoPane = new JPanel(); //Changed this Panel somehow;
topLevel.revalidate();
topLevel.repaint();
//以上2行不显示新信息。
我怎样才能让它更新?
【问题讨论】:
-
“我怎样才能让它更新?” 使用
CardLayout而不是尝试替换。见this example -
@peeskillet 这并不能满足我的需要,因为所有“卡片”都需要在开始时创建。显示第一张后,您无法更改基础卡。
-
考虑发布MCTRE