当前位置: 首页 > 知识库问答 >
问题:

CardLayout-如何删除当前卡片(Java Swing)

吕承望
2023-03-14

如何删除用户所在的当前卡。我知道如何使用next和previous函数通过一个卡片布局,但是如何删除用户正在使用的当前帧呢?例如,如果我有一个程序,其中我目前在第3个面板中的5个面板,我将如何删除当前的一个,这是第3个面板。一旦您移除它,下一个或上一个将替换它。我不认为可以使用removecurrentlayout,因为我没有删除组件。例如,在代码中,如果我在卡3上,我将如何删除卡3。

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;  
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CardLayoutProg {

    public static void main(String[] args) {

        JFrame frame = new JFrame("CardLayout");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container contentPane = frame.getContentPane();
        JPanel buttonPanel = new JPanel();
        JButton nextButton = new JButton("Next");
        buttonPanel.add(nextButton);
        contentPane.add(buttonPanel, BorderLayout.SOUTH);
        final JPanel cardPanel = new JPanel();
        final CardLayout cardLayout = new CardLayout();
        cardPanel.setLayout(cardLayout);

        for (int i = 1; i <= 5; i++) {
          JButton card = new JButton("Card " + i);
          card.setPreferredSize(new Dimension(200, 200));
          String cardName = "card" + 123123;
          cardPanel.add(card, cardName);
        }

        contentPane.add(cardPanel, BorderLayout.CENTER);
        nextButton.addActionListener(e -> cardLayout.next(cardPanel));

        frame.pack();
        frame.setVisible(true);
  }
}

共有1个答案

井洲
2023-03-14

不幸的是,CardLayout并不告诉您当前显示的是哪张卡(JPanel)。

签出扩展CardLayout以提供此功能的类的卡片布局焦点。

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

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

“删除”按钮的逻辑是:

cardPanel.remove(cardLayout.getCurrentCard());
 类似资料:
  • 删除一个业务网络卡片。 composer card delete --name admin@tutorial-network 句法 Options: --help Show help [boolean] -v, --version Show version number [boolean] --name, -n The name of the card

  • 问题内容: 我看了一个使用此代码的代码示例: 但是,当我使用Eclipse时,我收到一条消息,提示它已过时,我想知道是否还有另一种方法可以在单击按钮时在CardLayout中显示不同的卡片?下面是我的CardLayout类的代码。如果代码的某些部分不正确,也可以提出建议。谢谢! 问题答案: 我看不到Java7 show(容器父代,字符串名称)或Java6 show(容器父代,字符串名称)已过时 如

  • 问题内容: 是否可以在Java的CardLayout中获得顶级卡片?我尝试遍历每个组件以使用isVisible()检查可见性,但似乎它们都是“可见的”。 编辑:“顶卡”是指当前显示在“顶卡”上的那张,而不是第一张或最后一张卡。另外,我不知道它是否有帮助,但我正在寻找一个JPanel(或其子类) 编辑:代码段 上面的代码总是打印出每个组件类的名称,无论它们是否是可见的卡片。 编辑 :我正在使用它作为

  • 我创建了一个类,它有一个名为cards的面板,其布局是CardLAyout。我添加了卡片项目。在这个类中,我想通过调用layout来创建一个单独的方法,该方法将切换到下一张卡片。 } 正如你所看到的,我在卡片上添加了其他类的面板。我想做的是创建getNextCard()方法,该方法将当前活动的面板作为其参数。当我调用此功能时,它应该将当前活动的面板切换到我的CardLayout列表中的下一个面板。

  • 问题内容: 我想以随机顺序在CardLayout中显示卡片或屏幕。我需要有关如何完成此操作的指导。我应该使用什么策略? 我尝试使用下面的代码,但它的顺序固定。我希望能够选择我喜欢的任何顺序。 编辑! 抱歉,按我的意思随机排列并不是说改组。但是,很高兴知道。我希望程序的用户能够输入一些输入。根据输入的值,显示特定的屏幕/卡。 问题答案: 这是直接跳转到卡片的简单方法。 显然,这将需要对其余代码进行一

  • 问题内容: 我有微调框。数据加载完成后,控制器将重定向到其他视图。如何从历史记录中删除#/ load-data以避免进入#/ load-data视图? 问题答案: 您可以使用该方法替换上一个历史记录条目。 这是文档的链接。 因此,在显示微调器时,可以使用以下几行切换到实际视图: 或更短: