changeableContentPanel

changeableContentPanel

当我将此代码提供给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教程中的部分,以获得更多信息和工作示例。

08-26 01:22