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

如何使用CardLayout显示下一个卡片项目?

黄弘盛
2023-03-14

我创建了一个类,它有一个名为cards的面板,其布局是CardLAyout。我添加了卡片项目。在这个类中,我想通过调用layout来创建一个单独的方法,该方法将切换到下一张卡片。

import java.awt.CardLayout;
import java.awt.Container;


public class cards 
{
      public Container cards;

//creating objects for other classes
public cricGUI gu;
public cricMainMenu mm;

public void cardsList()
{
    cards = new Container();
    cards.setLayout(new CardLayout());

    //adding panels and contentPanes from other classes.
    mm = new cricMainMenu();
    gu = new cricGUI();

    cards.add(mm.contentPane);
    cards.add(gu.pane);
}
public void getNextCard(Container x)
{

}

}

正如你所看到的,我在卡片上添加了其他类的面板。我想做的是创建getNextCard()方法,该方法将当前活动的面板作为其参数。当我调用此功能时,它应该将当前活动的面板切换到我的CardLayout列表中的下一个面板。我该怎么做?谢谢

共有1个答案

傅涵忍
2023-03-14

你可能想看看如何使用CardLayout。

基本原则是,每张卡都有自己的标识符(通常是字符串常数)。要切换到特定的卡,你打电话

layout.show( container, identifier );

要实现像getNextCard()(更好的名称可能是switchToNextCard(容器、标识符))这样的方法,例如,您可以使用一个简单的switch case构造,如:

public void switchToNextCard( Panel container, String currentCard )
{
      switch ( currentCard )
      {
        case CARD1:
          layout.show( container, CARD2 );
          break;
        case CARD2:
          layout.show( container, CARD1 );
          break;
        default :
          throw IllegalArgumentException("Unsupported CardIdentifier.")
          break;
      }
}

在这个方法中,CARD1和CARD2是cardlayout中面板的标识符(字符串常量)。在这种情况下,它会在这两张卡之间来回切换。

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

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

  • 问题内容: 如果我在的构造函数中调用该方法,则该方法可以正常工作。但是,当我尝试从ActionListener 调用时,什么也没有发生。我检查了该方法是否正常工作。我检查了是否触发了ActionEvent并输入正确的if / else子句。我做错了什么,为什么我的第二页没有显示? 问题答案: 它将建议一个参考问题。看起来很可疑,因为您必须先创建一个first 实例才能进行初始化,这建议您现在有两个

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

  • 我有一个CardLayout,由许多不同的JPanels组成,我可以随意显示。该GUI链接到后端,并且GUI的目的是允许用户操作存储在后端中的数据。 问题是,当用户更改后端中的一些数据时,我的JLabels没有反映该数据中的更改。我明白这是因为JLabels初始化了一次,当我更新它们初始化到的变量时,我必须再次调用setText,以便它们体验更改。 示例:我的JLabel是如何初始化的 问题是,当

  • 我正在尝试制作一个选项卡,其中我必须在gridview中显示图像,所以我从一个库中制作了普通选项卡,并制作了一个适配器来显示我的主要活动代码中的图像。 我的片段类。 我已将适配器设置如下: 我能够在活动中创建网格视图,但是我用它来声明类中的图像,但在这里我遇到了错误。我在适配器中声明为适配器将调用图像的 Sso。它正确编译,没有任何错误,但它显示运行时错误错误为 那么如何解决这个问题,我必须声明图