CardLayout()可以显示叠在一起的一组Label
那么怎么知道那个Label在当前显示呢??

解决方案 »

  1.   

    addLayoutComponent
    public void addLayoutComponent(Component comp,
                                   Object constraints)将指定的组件添加到此卡片布局的内部名称表。constraints 指定的对象必须是一个字符串。卡片布局将此字符串作为一个键-值对存储起来,该键-值对可用于对特定卡片的随机访问。通过调用 show 方法,应用程序可以显示具有指定名称的组件。 指定者:
    接口 LayoutManager2 中的 addLayoutComponent
    参数:
    comp - 要添加的组件。
    constraints - 标识布局中特定卡片的标记。 
    抛出: 
    IllegalArgumentException - 如果 constraint 不是一个字符串。
      

  2.   

    当容器第一次显示时,第一个添加到 CardLayout 对象的组件为可见组件。
    CardLayout 本身提供一些方法,但是是一些浏览或显示卡片的固定模式,
    LZ 想要知道当前的操作对象,可以自己加一个flag 
      

  3.   

    给你写个例子import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class MF extends JFrame
    {
    MF()
    {
    setSize(200,200);
    final Container con = getContentPane();
    final CardLayout card = new CardLayout();
    con.setLayout(card);

    JPanel p1 = new JPanel();
    p1.setBackground(Color.red);

    JPanel p2 = new JPanel();
    p2.setBackground(Color.green);

    JPanel p3 = new JPanel();
    p3.setBackground(Color.yellow);

    con.add(p1,"first");
    con.add(p2,"second");
    con.add(p3,"third");

    con.validate();

    addMouseListener(new MouseAdapter()
    {
    public void mousePressed(MouseEvent e)
    {card.next(con);}
    });
    }

    public static void main(String args[])
    {
    MF my = new MF();
    my.setVisible(true);
    my.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }
      

  4.   

    可以通过CardLayout的方法
    void show(Container parent, String name)
    来确定显示的那一个
      

  5.   

    不好意思 理解错你的意思了
    加入cardlayout的组件可以调用其父类component的方法
    public boolean isVisible()来确定是否在父容器处于显示状态
    做个循环就能知道现在显示的是哪一个了
      

  6.   

    不好意思 理解错你的意思了 
    加入cardlayout的组件可以调用其父类component的方法 
    public boolean isVisible()来确定是否在父容器处于显示状态 
    做个循环就能知道现在显示的是哪一个了 这个怎么用??