import java.awt.Button;
import java.awt.CardLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class DisplayWords extends Frame{
//private static String[] words;
private Button previous = new Button("上一个");
private Button next = new Button("下一个");
private CardLayout cl = new CardLayout();
private Panel pa = new Panel();
DisplayWords(String[] strarray){
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
setSize(640,400);
setLocation(320,200);
setVisible(true);
setLayout(null);
previous.setBounds(400,160,40,30);
next.setBounds(400,210,40,30);
add(previous);
add(next);
next.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
cl.next(pa);
}
});
previous.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
cl.previous(pa);
}
});
pa.setBounds(200,160,100,50);
pa.setLayout(cl);
for(int i = 0; i<strarray.length; ++i){
Label la = new Label(strarray[i]);
pa.add(la,""+i);
}
add(pa);
}
public static void main(String[] args){
String[] words = new String[]{"apple","blue","Cardlayout","debug","exception","flowlayout"};
//String[] words = new String[]{"1","0"};
DisplayWords dw = new DisplayWords(words);
}
}

解决方案 »

  1.   

    从书上找了个例子,给你看看。你的代码写的比较乱
    /*001*/ import java.awt.*; 
    /*002*/ import java.awt.event.*;
    /*003*/ 
    /*004*/ public class cardLayoutDemo3 extends Frame{ 
    /*005*/  Panel first,second;
    /*006*/  Panel pan;
    /*007*/  CardLayout card0;
    /*008*/  boolean flag = true;
    /*009*/ 
    /*010*/  cardLayoutDemo3(){ 
    /*011*/  super("CardLayout Demostration"); 
    /*012*/ first = new Panel();
    /*013*/  first.add(new Label("第一张牌"));
    /*014*/  second = new Panel();
    /*015*/  second.add(new Label("第二张牌"));
    /*016*/  first.setBackground(Color.gray);
    /*017*/  second.setBackground(Color.lightGray);
    /*018*/  card0 = new CardLayout();
    /*019*/  pan = new Panel();
    /*020*/  pan.setLayout(card0);
    /*021*/  pan.add("fst",first);
    /*020*/  pan.add("scnd",second);
    /*022*/ 
    /*023*/  Panel control = new Panel();
    /*024*/  Button btn = new Button("切换");
    /*026*/  control.add(btn);
    /*027*/ 
    /*028*/  add("Center",pan);
    /*029*/  add("North", control);
    /*030*/ 
    /*031*/  pack();
    /*032*/  setSize(200,200); 
    /*033*/  setVisible(true); 
    /*034*/  addWindowListener(new WindowAdapter(){
    /*035*/       public void windowClosing(WindowEvent e){
    /*036*/           System.exit(0); 
    /*037*/      }
    /*038*/ });
    /*039*/  }
    /*040*/  public boolean action(Event e,Object obj){
    /*041*/      flag = ! flag;
    /*042*/      if(flag){
    /*043*/      card0.first(pan); 
    /*044*/      System.out.println("fist");
    /*045*/      }
    /*046*/      else{
    /*047*/      card0.next(pan);
    /*048*/      System.out.println("second");
    /*049*/      }
    /*050*/      return true;
    /*051*/  }
    /*052*/  public static void main(String args[]){
    /*053*/  new cardLayoutDemo3();
    /*054*/  }
    /*055*/ } 
      

  2.   

    把这句setVisible(true)放在你添加完所有组件之后,然后看看行不行。
      

  3.   

    setVisible(true);这句代码最好是放在main()中,在初始化构造器后再让面板显示出来,这样更合理一些。