当我将此代码提供给 MouseListener
接口(interface)中的 mouseClicked
方法时,
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(),并且只需在对面板进行所有更改后调用代码一次。
the changeableContentPanel is expanded.
是的,因为布局管理器被调用,面板的大小将根据添加到面板的组件的大小重新计算。
Could anyone help me?
如果您不希望大小发生变化,那么您应该在面板上使用CardLayout
。面板尺寸将固定为添加到面板的最大卡片的尺寸。然后你只需交换组件即可。
阅读 Swing 教程中关于 How to Use CardLayout 的部分了解更多信息和工作示例。
关于java - 向其中删除/添加组件时,面板会展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53043756/