0

プログラムにタブ付きのビューがあり、各タブの下にいくつかのパネルがあり、それらをボタンで回転させます。これらのタブのそれぞれに CardLayout を実装することにしました。約 7 つのタブがあることを考慮して、物事を少しすっきりさせるクラスを作成することにしました。このクラスは PanelSystem と呼ばれ、すでに作成されている JPanels を取り込み、それらを CardLayout に追加します。また、パネル間を移動するための switchPanel メソッドも実装します。これまでのところ、私は持っています:

public class PanelSystem {

JPanel cards;
CardLayout cl;

public PanelSystem(JPanel...panels) {
    // Create Panel with card layout
    cards = new JPanel(new CardLayout());

    // Add all the panels to the card system
    for (JPanel p : panels) cards.add(p);

    // Gains access to the card layout?
    cl = (CardLayout)(cards.getLayout());

    // Show starting card
    cl.show(cards, *UNIQUE IDENTIFIER*);
}
}

タブごとに異なる数の JPanel があるため、JPanels...panels 行を実装する必要がありました。これが正しく機能するかどうかはまだわかりませんが、最初のカードを表示しようとしているコンストラクターの最後で問題が発生します。これは、追加した方法のために一意の識別子がないためです。これを修正する方法について何か考えはありますか?? よろしくお願いします!

4

1 に答える 1

0

あたかも配列であるかのように varargs にアクセスできます (とにかくです)。古典的な for ループでループするとどうなるか

for (int i = 0; i < panels.length; i++) {
    cards.add(panels[i], Integer.toString(i));
}

それから最後に

cl.show(cards, "0");

編集:私はSwingレイアウトに慣れていません。識別子が文字列である必要があるのか​​、単なるオブジェクトである必要があるのか​​ を正確に思い出せませんが、ここから理解できるはずです。

于 2011-12-30T16:06:45.927 に答える