本帖最后由 albertwmm 于 2012-09-08 11:04:11 编辑

解决方案 »

  1.   

    1、Frame默认的布局管理器是BorderLayout,容器都有默认布局管理器,所以不用设置,这个例子是卡片布局,所以要new 出来
    2、CardLayoutDemo 继承 Frame 
    3、 new CardLayoutDemo("ABCD");  这句就已经new 了一个CardLayoutDemo对象。然后调用构造方法
      

  2.   

    main里的这句 除了给窗口一个名字 还有其他用吗?有什么需要调用什么的吗?
      

  3.   


    import java.awt.*;
    import java.awt.event.*;
    public class CardLayoutDemo implements MouseListener{ private Button b1=new Button("AA");
    private Button b2=new Button("BB");
    private Button b3=new Button("CC");
    private Frame f;
    private CardLayout cl=new CardLayout();  //卡片管理器cl
    private Panel cards=new Panel();   //容器cards

        public CardLayoutDemo(String s){
      
        }
        
    public static void main(String[] args) {
    CardLayoutDemo cld=new CardLayoutDemo("ABC");
            cld.init();
    }
        
    public void init(){
    f.setLayout(new BorderLayout());
    f.setSize(500,500); 

    Panel p=new Panel();
    p.setLayout(new FlowLayout());

    b1.addMouseListener(this);
    b2.addMouseListener(this);
    b3.addMouseListener(this);

    p.add(b1);
    p.add(b2);
    p.add(b3);

    f.add(BorderLayout.NORTH,p);
    cards.setLayout(new CardLayout());  //设置容器为卡片管理器
    cards.add(new Button("AAA"));
    cards.add(new Button("BBB"));
    cards.add(new Button("CCC"));
    f.add(BorderLayout.CENTER,cards);
    f.setVisible(true);

    f.addWindowListener(new WindowAdapter(){
    public void WindowClosing(WindowEvent evt){
    f.setVisible(false);
    f.dispose();
    System.exit(0);
    }
    });
    } public void mouseClicked(MouseEvent e) {
    if(e.getSource()==b1){
    cl.first(cards);
    }
    else if(e.getSource()==b2){
    cl.first(cards);
    cl.next(cards);
    }
    else if(e.getSource()==b3){
    cl.last(cards);
    }

    }
    public void mousePressed(MouseEvent e) {
    }
    public void mouseReleased(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
    }
    public void mouseExited(MouseEvent e) {
    }
    }这是我自己写的   Eclipse 没报错, 却运行不起来。怎么改改啊
      

  4.   

    我改了下 可以运行了。。 但是我实在不清楚 main方法中的句子到底有什么用。。import java.awt.*;
    import java.awt.event.*;
    public class CardLayoutDemo implements MouseListener{ private Button b1=new Button("AA");
    private Button b2=new Button("BB");
    private Button b3=new Button("CC");
    private Frame f=new Frame("ssssss");
    private CardLayout cl=new CardLayout();  //实例化一个卡片管理器cl
    private Panel cards=new Panel();   //容器cards

        public CardLayoutDemo(String s){
             init();
        }
        
    public static void main(String[] args) {
    new CardLayoutDemo("xxxxx");
          
    }
        
    public void init(){
    f.setLayout(new BorderLayout());
    f.setSize(500,500); 

    Panel p=new Panel();
    p.setLayout(new FlowLayout());

    b1.addMouseListener(this);
    b2.addMouseListener(this);
    b3.addMouseListener(this);

    p.add(b1);
    p.add(b2);
    p.add(b3);

    f.add(BorderLayout.NORTH,p);
    cards.setLayout(cl);  //设置容器cards为卡片管理器
    cards.add("AAaA",new Button("AAA"));
    cards.add("BBBb",new Button("BBB"));
    cards.add("CCCC",new Button("CCC"));
    f.add(BorderLayout.CENTER,cards);
    f.setVisible(true);

    f.addWindowListener(new WindowAdapter(){
    public void WindowClosing(WindowEvent evt){
    f.setVisible(false);
    f.dispose();
    System.exit(0);
    }
    });
    } public void mouseClicked(MouseEvent e) {
    if(e.getSource()==b1){
    cl.first(cards);
    }
    else if(e.getSource()==b2){
    cl.first(cards);
    cl.next(cards);
    }
    else if(e.getSource()==b3){
    cl.last(cards);
    }

    }
    public void mousePressed(MouseEvent e) {
    }
    public void mouseReleased(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
    }
    public void mouseExited(MouseEvent e) {
    }
    }
    运行出来 标题也是sssss 不是main方法中的xxxx  
    这个句子到底有什么用啊?用在哪了啊?
      

  5.   

    你这个CardLayoutDemo的实例,没有继承Frame,也没有Frame的成员不会'有反应' 
      

  6.   


    import java.awt.*;
    import java.awt.event.*;
    public class CardLayoutDemo implements MouseListener{ private Button b1=new Button("AA");
    private Button b2=new Button("BB");
    private Button b3=new Button("CC");
    private Frame f=new Frame("sssssss");
    private CardLayout cl=new CardLayout();  //实例化一个卡片管理器cl
    private Panel cards=new Panel();   //容器cards

        public CardLayoutDemo(String s){
             init();
        }
        
    public static void main(String[] args) {
    new CardLayoutDemo("xxxx");
          
    }
        
    public void init(){
    f.setLayout(new BorderLayout());
    f.setSize(500,500); 

    Panel p=new Panel();
    p.setLayout(new FlowLayout());

    b1.addMouseListener(this);
    b2.addMouseListener(this);
    b3.addMouseListener(this);

    p.add(b1);
    p.add(b2);
    p.add(b3);

    f.add(BorderLayout.NORTH,p);
    cards.setLayout(cl);  //设置容器cards为卡片管理器
    cards.add("AAaA",new Button("AAA"));
    cards.add("BBBb",new Button("BBB"));
    cards.add("CCCC",new Button("CCC"));
    f.add(BorderLayout.CENTER,cards);
    f.setVisible(true);

    f.addWindowListener(new WindowAdapter(){
    public void WindowClosing(WindowEvent evt){
    f.setVisible(false);
    f.dispose();
    System.exit(0);
    }
    });
    } public void mouseClicked(MouseEvent e) {
    if(e.getSource()==b1){
    cl.first(cards);
    }
    else if(e.getSource()==b2){
    cl.first(cards);
    cl.next(cards);
    }
    else if(e.getSource()==b3){
    cl.last(cards);
    }

    }
    public void mousePressed(MouseEvent e) {
    }
    public void mouseReleased(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
    }
    public void mouseExited(MouseEvent e) {
    }
    }代码我已经改好了 可以运行了。  但是我实在不知道 main方法中 句子有什么用。。标题也是Frame里的sssss 不是这句里的xxxx
      

  7.   

    第一个代码通过调用父类的构造函数 将 实例化时传入的参数 作为了Frame的标题
    你这个代码可以把参数 再传给init,然后在init中作为Frame创建时的参数,不过整个代码就没有原来的好,有点乱
      

  8.   

    1)new 个对象而已,用意就是创建个布局管理器罢了
    2)init方法里是一些初始化代码,你不觉得把初始化代码放在一个名为“初始化”的函数里很专业么?特别是在初始化代码较多的时候。
    3)同上
    4)这个布局管理器有点特别,他被设计成给每个容器加个标识,你切换视图的时候就用这个标识。 那个“firest Button”就是个标识而已~ 你愿意的话可以叫它“阿猫阿狗”,注意不要有重复的标识~
      

  9.   

    我一直想不明白的是 为什么在main方法中 需要创建实例,而且只是创建实例? 创建了又什么都不干?
      

  10.   

    在cards中添加按钮 为什么需要些"first Button" 。为什么要写这个?能不写或随便写吗?
    这是为方便操作来定义的,只要可以明确区分就可以按自己要求定义