如何使用CardLayout显示下一个Card Item?

时间:2012-07-31 15:23:02

标签: java swing jframe jpanel cardlayout

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

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 个答案:

答案 0 :(得分:3)

您可能需要查看How to use CardLayout

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

layout.show( container, identifier );

要实现类似getNextCard()的方法(更好的名称可能是switchToNextCard( container, identifier )),您可以使用简单的开关案例构造,例如:

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是您的卡布局中面板的标识符(字符串常量)。在这种情况下,它会在这两张牌之间往返切换。