2011-12-30 5 views
0

私のプログラムにはタブ付きのビューがあり、各タブの下には複数のパネルがあり、ボタンを使って回転します。私はこれらのタブごとにCardLayoutを実装することに決めました。私は約7つのタブがあることを踏まえて、物事をもっときれいにするためのクラスを書くことに決めました。このクラスはPanelSystemと呼ばれ、すでに作成されているJPanelを取り込んでCardLayoutに追加します。パネル間を移動するswitchPanelメソッドも実装します。これまでのところ私が持っている:私のプログラムのCardLayoutsの作成のためのJavaクラスの作成

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を実装しなければならなかった各タブのためのJPanelの異なる数が...パネルラインがあるので。私はこれがまだ正しく動作するかどうかはわかりませんが、問題はコンストラクタの最後にあります。コンストラクタの最後に、追加した方法のために一意の識別子がないため、最初のカードを表示しようとしています。どのように私はこれを修正できるかについての任意の考え??事前にみんなありがとう!

答えて

0

varargsには、あたかも配列であるかのようにアクセスできます。どの程度の編集

あなた最後に、ループのための古典的な

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

と、それをループ

cl.show(cards, "0"); 
場合:私は、Swingのレイアウトにさびよ、あなたの識別子を必要とするかどうかを正確に思い出すことができませんStringまたは任意のオブジェクトにすることができますが、ここから理解できるはずです。

+0

洞察に感謝アンドリュー!私はそれがどのように働いたのか分かりませんでした。だから私がこれをした場合: パブリックPanelSystem(JPanel ...パネル、文字列...名前) 私はパネルと名前の2つの配列を取得します。これのポイントは、パネルに続いてString識別子を指定することです。これはうまくいくのでしょうか? – user1058210

+0

悲しいことに、最後の引数だけがvarargsになることができます(そうしないと、コンパイラはどこで終了したのかわかりません)。 –

+0

ahhです。あなたが私に示した方法の唯一の潜在的な問題は、数字が何パネルを指しているのかを知ることが難しいかもしれないということです。 – user1058210

関連する問題