关于CardLayout:CardLayout-如何删除当前卡(Java Swing)

CardLayout - How to Delete current card (Java Swing)


如果查看Container的文档,您会发现它具有remove()方法。由于JPanel扩展了Container,因此它也具有此方法。您应该熟悉这些API文档,才能找到此类信息。


很遗憾,CardLayout不能告诉您当前正在显示哪个卡(JPanel)。

查看Card Layout Focus以获取扩展CardLayout以提供此功能的类。

您将使用getCurrentCard()方法访问当前显示的面板。

然后,一旦获得当前显示的卡片,就可以使用Container类的remove(...)方法将其从父面板中删除。

您将只使用以下类:

1
2
//final CardLayout cardLayout = new CardLayout();
final RXCardLayout cardLayout = new RXCardLayout();

"删除"按钮的逻辑为:

1
cardPanel.remove(cardLayout.getCurrentCard());

当您说索引(5个面板的第3个面板)时,您的意思是插入组件时的组件名称(字符串),对吗?我不知道执行此操作的任何优雅方法,但是您可以尝试获取此容器中的所有组件(parentComponent),并尝试查找与索引名称相同的组件。例如:

1
2
3
4
5
6
7
Component[] components = parentComponent.getComponents();

for(int i = 0; i < components.length; i++) {
    if(components[i].getName().equals(index)) {
        cardLayout.removeLayoutComponent(components[i]);
    }
}