3

私は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リストの次のパネルに切り替わります。これどうやってするの?ありがとう

4

1 に答える 1

3

CardLayoutの使用方法を確認することをお勧めします。

基本的な原則は、すべてのカードが独自の識別子(通常は文字列定数)を取得することです。特定のカードに切り替えるには、

layout.show( container, identifier );

getNextCard()(より良い名前はおそらく)のようなメソッドを実装するswitchToNextCard( container, identifier )には、たとえば、次のような簡単なswitchcase構造を使用できます。

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は、カードレイアウト内のパネルの識別子(文字列定数)です。この場合、それらの2枚のカード間で前後に切り替わります。

于 2012-07-31T15:46:47.613 に答える