2011-12-30 26 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我必须实现JPanels ...面板行。我不确定这是否正常工作,但问题出现在我试图展示第一张卡片的构造函数的最后,因为它没有唯一的标识符,因为我添加了它们。任何想法如何我可以解决这个问题?在此先感谢你们!

回答

0

您可以像访问数组那样访问可变参数(无论如何)。怎么样,如果你通过它循环与经典的for循环

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

然后在最后

cl.show(cards, "0"); 

编辑:我是Swing的布局生锈,不记得你到底是否需要你的标识符成为一个字符串或任何对象,但你应该能够从这里弄清楚。

+0

感谢您的洞察安德鲁!我不知道它是如何工作的。所以如果我这样做: public PanelSystem(JPanel ... panels,String ... names) 我会得到2个名为面板和名称的数组。这一点将是指定一个面板后跟一个字符串标识符 - 这会工作吗? – user1058210 2011-12-30 16:15:03

+0

不幸的是:只有最后一个参数可以是可变参数(否则编译器将无法确定一个完成和另一个开始的位置,我猜) – 2011-12-30 16:17:06

+0

ahh我明白了。你给我指了路,唯一潜在的问题是,它可能很难知道电话号码是指什么面板 – user1058210 2011-12-30 16:21:36

相关问题