1

CardLayout の JavaDocs がわかりません。私はアプレットを持っています。このアプレットから、JPanel を拡張する 5 つのクラスを作成しました。これらのクラス内でこれまでに行われたのは、設計 (いくつかの GUI コンポーネント) だけです。ここで、一度に 1 つのパネル (CardLayout) が表示されるように、アプレットを介してこれらすべてのクラスをリンクしたいと考えています。したがって、アプレットから、CardLayout の next メソッドを使用して次のパネルを表示する機能が得られます。これが私のコードです:

setLayout(new CardLayout());

add(mainView);                //mainView, managerView, searchView, storesView and hoursView
add(managerView);             //   are initialized
add(searchView);
add(storesView);
add(hoursView);

ここに私のイベント処理コードがあります:

public void actionPerformed(ActionEvent e)
{
    CardLayout cl;                        //CardLayout object to manipulate the next page

    cl = (CardLayout)(this.getLayout());

    if(e.getSource() == mainView.getManagerButton())
    {
        cl.next(this);
    }
    if(e.getSource() == mainView.getSearchButton())
    {
        cl.next(this);              //if the user hits the searchButton I want to link to panel
        cl.next(this);              //   searchView. Is that correct?
    }
}

このコードでは、IllegalArgumentException が発生します

誰か私の間違いを指摘してください!また、コード内の質問に対するコメントをいくつか提供しました。いつものように、ありがとう!

4

2 に答える 2

2

パネルをカード レイアウトに追加したときに、各カードを識別するための制約は使用しませんでした。その後、特定のカードに直接ジャンプできます。

実際の例については、カード レイアウトの使用方法を参照してください。

于 2011-12-05T02:35:17.613 に答える
0

さらに明確にするために、@camickr によって提供されたリンクから文字通りコピーされた一部のスニペット

パネルの作成

//Create the panel that contains the "cards".
cards = new JPanel(new CardLayout());
cards.add(card1, BUTTONPANEL);
cards.add(card2, TEXTPANEL);

BUTTONPANELTEXTPANEL文字列です。異なるパネル間の切り替えは、呼び出しによって行われます

CardLayout cl = (CardLayout)(cards.getLayout());
cl.show(cards, (String)evt.getItem());

evt.getItem()等しいBUTTONPANELか、TEXTPANEL

于 2011-12-05T09:24:06.757 に答える