是一个关于CardLayout布局的问题,我写了个东西,应该是按鼠标后,调出嵌入在Frame中的其它Panel图层,不过我运行时,按下鼠标,没有反应,Frame里面始终显示第一个Panel图层,因此请教一下,我写的东西错在哪里,请各位前辈多多帮忙,不胜感激~~~~代码是: import java.awt.*; 
import java.awt.event.*; 
public class TestCardLayout 

Frame f; 
Panel p1,p2,p3,p4,p5; 
Label l1,l2,l3,l4,l5; 
CardLayout myCard; 
public static void main(String[] args) 

TestCardLayout ct = new TestCardLayout(); 
ct.go(); 

public void go() 

f = new Frame("CardLayout"); 
myCard = new CardLayout(); 
f.setLayout(myCard); 
//f.setLayout(new CardLayout()); 
p1 = new Panel(); 
p2 = new Panel(); 
p3 = new Panel(); 
p4 = new Panel(); 
p5 = new Panel(); 
l1 = new Label("第一章"); 
p1.setBackground(Color.yellow); 
p1.add(l1); 
l2 = new Label("第二章"); 
p2.setBackground(Color.red); 
p2.add(l2); 
l3 = new Label("第三章"); 
p3.setBackground(Color.green); 
p3.add(l3); 
l4 = new Label("第四章"); 
p4.setBackground(Color.white); 
p4.add(l4); 
l5 = new Label("第五章"); 
p5.setBackground(Color.cyan); 
p5.add(l5); 
f.addMouseListener(new MouseAdapter() 

public void mousePressed(MouseEvent e){} 
public void mouseReleased(MouseEvent e){} 
}); 
f.addMouseMotionListener(new MouseMotionAdapter(){}); 
f.add(p1,"First"); 
f.add(p2,"Second"); 
f.add(p3,"Third"); 
f.add(p4,"Fourth"); 
f.add(p5,"Fifth"); 
f.addWindowListener(new WindowAdapter() 

public void windowClosing(WindowEvent e) 

Frame f = (Frame)(e.getSource()); 
f.dispose(); 
System.exit(0); 

}); 
//myCard.show(f,"First"); 
f.setSize(400,400); 
f.setVisible(true); 


解决方案 »

  1.   

    package common;
    import java.awt.*; 
    import java.awt.event.*; 
    public class TestCardLayout 

    Frame f; 
    Panel p1,p2,p3,p4,p5; 
    Label l1,l2,l3,l4,l5; 
    CardLayout myCard; 
    public static void main(String[] args) 

    TestCardLayout ct = new TestCardLayout(); 
    ct.go(); 

    public void go() 

    f = new Frame("CardLayout"); 
    myCard = new CardLayout(); 
    f.setLayout(myCard); 
    //f.setLayout(new CardLayout()); 
    p1 = new Panel(); 
    p2 = new Panel(); 
    p3 = new Panel(); 
    p4 = new Panel(); 
    p5 = new Panel(); 
    l1 = new Label("第一章"); 
    p1.setBackground(Color.yellow); 
    p1.add(l1); 
    l2 = new Label("第二章"); 
    p2.setBackground(Color.red); 
    p2.add(l2); 
    l3 = new Label("第三章"); 
    p3.setBackground(Color.green); 
    p3.add(l3); 
    l4 = new Label("第四章"); 
    p4.setBackground(Color.white); 
    p4.add(l4); 
    l5 = new Label("第五章"); 
    p5.setBackground(Color.cyan); 
    p5.add(l5); 
    p1.addMouseListener(new MouseAdapter() 

    public void mousePressed(MouseEvent e){
    System.out.println("a");
    myCard.next(f);

    public void mouseReleased(MouseEvent e){} 
    }); 
    f.addMouseMotionListener(new MouseMotionAdapter(){}); 
    f.add(p1,"First"); 
    f.add(p2,"Second"); 
    f.add(p3,"Third"); 
    f.add(p4,"Fourth"); 
    f.add(p5,"Fifth"); 
    f.addWindowListener(new WindowAdapter() 

    public void windowClosing(WindowEvent e) 

    Frame f = (Frame)(e.getSource()); 
    f.dispose(); 
    System.exit(0); 

    }); 
    //myCard.show(f,"First"); 
    f.setSize(400,400); 
    f.setVisible(true); 

    } //当前页面显示的是P1  
    你 f.addMouseListener(new MouseAdapter()  这个无法激发事件的