当我将此代码提供给mouseClicked
界面中的MouseListener
方法时,changeableContentPanel
被展开。有人可以帮我吗?
if (!changeableContentPanel.isAncestorOf(aMO)) {
aMO = new AccountsManagementOptions();
changeableContentPanel.removeAll();
changeableContentPanel.validate();
changeableContentPanel.repaint();
aMO.setLocation(5, 100);
changeableContentPanel.add(aMO);
changeableContentPanel.validate();
changeableContentPanel.repaint();
}
最佳答案
在面板上删除/添加组件时,您应该使用:
panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();
也就是说,您应该使用revalidate()而不是validate(),并且在对面板进行所有更改之后,只需调用一次代码。
changeableContentPanel被展开。
是的,因为调用了布局管理器,并且面板的大小将根据添加到面板中的组件的大小重新计算。
有人可以帮我吗?
如果您不想更改大小,则应在面板上使用
CardLayout
。面板尺寸将固定为添加到面板上的最大卡的尺寸。然后,您只需交换组件。阅读有关How to Use CardLayout的Swing教程中的部分,以获得更多信息和工作示例。