偶有一个applet,有不少Button和Label。
编译运行后,显示有点问题。以前用Frame的话,只要pack一下就行了
但applet不能pack,怎么办?

解决方案 »

  1.   

    代码如下:
    import java.awt.*;
    import java.applet.*;
    import java.util.*;
    public class DemoApplet extends Applet implements Observer
     {Panel createMyTable()
       {Panel p=new Panel(); int i; //p.setBackground(Color.blue);
        GridBagLayout gbl=new GridBagLayout(); p.setLayout(gbl);
        GridBagConstraints c=new GridBagConstraints();
        Label l=new Label("My Table",Label.CENTER);
        c.gridwidth=GridBagConstraints.REMAINDER;
        gbl.setConstraints(l,c); p.add(l);
        Button bt[]=new Button[6];
        String s[]={"Create Table","Vacant Seat","Vacant Seat","Vacant Seat","Vacant Seat","Vacant Seat"};
        for(i=0;i<s.length;i++)
         {bt[i]=new Button(s[i]);
          c.gridwidth=1; c.gridx=i; c.gridy=1;
          gbl.setConstraints(bt[i],c); p.add(bt[i]);
         }
        CheckboxGroup cbg=new CheckboxGroup(); Checkbox cb[]=new Checkbox[3];
        cb[0]=new Checkbox("One Set",cbg,false);
        cb[1]=new Checkbox("Two Set",cbg,true);
        cb[2]=new Checkbox("Three Set",cbg,false);
        for(i=0;i<cb.length;i++)
         {c.gridwidth=1; c.gridx=i; c.gridy=2;
          gbl.setConstraints(cb[i],c); p.add(cb[i]);
         }
        cbg=new CheckboxGroup(); cb=new Checkbox[3];
        cb[0]=new Checkbox("30 Timeout",cbg,false);
        cb[1]=new Checkbox("40 Timeout",cbg,true);
        cb[2]=new Checkbox("50 Timeout",cbg,false);
        for(i=0;i<cb.length;i++)
         {c.gridwidth=1; c.gridx=i+3; c.gridy=2;
          gbl.setConstraints(cb[i],c); p.add(cb[i]);
         } 
        return p;
       }
      public void init()
       {    
        GridBagLayout gbl=new GridBagLayout(); setLayout(gbl);
        GridBagConstraints c=new GridBagConstraints();
        Label l=new Label("Your Number:",Label.CENTER);
        c.gridwidth=GridBagConstraints.REMAINDER;
        gbl.setConstraints(l,c); add(l);
        Panel p1=createMyTable();
        gbl.setConstraints(p1,c); add(p1); invalidate();//doLayout();//pack();
        resize(640,480);
    //    add(new Button("创建牌桌"));   }  public void paint(Graphics g)
       {
    /*
            for (int x=0; x<numPoints; ++x)
            {
                g.drawLine(oldX, oldY, points[x].x, points[x].y);
                oldX = points[x].x;
                oldY = points[x].y;
            }*/
        }
       public void update(Observable t, Object o)
        {
        }
       public static void main(String args[]) {
         Frame f = new Frame("GridBag Layout Example");
         DemoApplet ex1 = new DemoApplet();
         ex1.init();
         f.add("Center", ex1);
         f.pack();
         f.setSize(f.getPreferredSize());
         f.show();
         }
      
      }