我在练习使用GridLayout来布置组件,可是我在构造函数定义4*4的网格,出来的却只有三行三列,第四列就丢失掉了,各位能帮我看看问题出在哪儿吗?拜托~~~~~~~
c程序代码如下:import java.applet.*;
import java.awt.*;public class GridlayoutDemo extends Applet
{
 static final int n=4;
 public void init()
 {
  setLayout(new GridLayout(n,n));
  setFont(new Font("SansSerif",Font.BOLD,24));
  for(int i=0;i<n;i++)
   for(int j=0;j<n;j++)
   {
    int k=i*n+j;
    if(j>0)
     add(new Button(""+k));
   }
 }
}
html文件:
<html>
 <head>
  <title>GridlayoutDemo</title>
 </head>
 <body>
  <applet code="GridlayoutDemo.class" width=300 height=200>
  </applet>
 </body>
</html>理论上应该是四行四列,标签为1~15

解决方案 »

  1.   


    package csdn;import java.applet.*; 
    import java.awt.*; public class Demo1 extends Applet 

     static final int n=4; 
     public void init() 
     { 
      setLayout(new GridLayout(n,n)); 
      setFont(new Font("SansSerif",Font.BOLD,24)); 
      for(int i=0;i <n;i++) 
       for(int j=1;j <=n;j++) //这里,1开始
       { 
        int k=i*n+j; 
        if(j>0) 
         add(new Button(""+k)); 
       } 
     } 
    }
      

  2.   


    这句话有矛盾吧,四行四列,标签怎么会是1~15呢,1~15才15个啊package csdn;import java.applet.*; 
    import java.awt.*; public class Demo1 extends Applet 

     static final int n=4; 
     public void init() 
     { 
      setLayout(new GridLayout(n,n)); 
      setFont(new Font("SansSerif",Font.BOLD,24)); 
      for(int i=0;i <n;i++) 
       for(int j=1;j <=n+1;j++) //这里,1开始
       { 
        int k=i*n+j; 
        if(j>0) 
         add(new Button(""+k)); 
       } 
     } 
    }
      

  3.   

     for(int j=0;j <n;j++) 
       { 
        int k=i*n+j; 
        if(j>0) 
         add(new Button(""+k)); 
       } 
    这里,只有j>0,即当j=1,2,3时才会执行,所以丢失一列。改为j>=0就可以了。
      

  4.   

    import java.applet.*; 
    import java.awt.*; public class GridlayoutDemo extends Applet 

     static final int n=4; 
     public void init() 
     { 
      setSize(800,800);//这里指定大小
      setLayout(new GridLayout(n,n)); 
      setFont(new Font("SansSerif",Font.BOLD,24)); 
      for(int i=0;i <n;i++) 
       for(int j=1;j<=n;j++)//这里1开始,取值都N 
       { 
        int k=i*n+j; 
        if(j>0) 
         add(new Button(""+k)); 
       } 
     } 

    另外你看不到的那列是IE显示的问题,他默认的大小不够显示出来的,自己用APPLETVIEWER看一下就知道了,可以显示完全的
    想设置大小的话,在INIT里SETSIZE(),大一些就能显示了