我在我的GUI程序中定义了
JLabel[][] label = new JLabel[4][6];
但是后面我用到label[0][0].setsetText("1");
时就总是异常java.lang.NullPointerException
这个有什么问题么?
还有就是我用这条语句System.out.println(label.length);
的时候得到的输出值只有4,只有它的行值,为什么不是24呢?
我是一名初学者还望有知道的不吝赐教,不胜感激。

解决方案 »

  1.   

    label.lenght的值是4,label[].length的值是6,看看数组就会明白的,而label[0][0].setsetText("1"); 的异常个人觉得应该用for循环来赋值,没上机调试,你试一下吧~~~
      

  2.   

    label.lenght的值是4 相当于二维数组存储了四个一维数组 
      

  3.   

    JLabel[][] label = new JLabel[4][6]; 
    只是初始化一个所有项皆是null的2维数组。
      

  4.   

    这个解释如何?程序的运行结果就解答了你的问题。 public static void main(String[] args) {

    JLabel[][] lableArray = new JLabel[4][6];

    JLabel[] label = null;

    for (int i = 0; i < lableArray.length; i++) {

    label = lableArray[i];

    for (int j = 0; j < label.length; j++) {

    label[j] = new JLabel();
    label[j].setText(String.valueOf(i + j));
    System.out.println("[" + i + "][" + j + "] : textValue = " + label[j].getText());
    }
    }
    }
      

  5.   

    没有生成JLable对象,因为这是对象数组。可以这来试一下:
        import javax.swing.*;
        class testJlabel{
    public static void main(String []args){
    JLabel [][]label=new JLabel[4][];//生成第一维数组引用句柄
    for(int i=0;i<label.length;i++){
    label[i]=new JLabel[6];//生成第二维数组引用句柄
    }
    for(int i=0;i<label.length;i++){
    for( int j=0;j<label[i].length;j++){
    label[i][j]=new JLabel();//生成JLable对象
    }
    }
    label[0][0].setText("1");
    System.out.println(label[0][0].getText());
    }
    }
      

  6.   

    lz初始化了吗?JLabel[][] label = new JLabel[4][6]; 这样是不行了 
    要lable[i][j] = new ..... 后才行
      

  7.   


    正确 每一个要单独使用new创建
      

  8.   

    1。没有初始化。
    2。取得的是外层数组长度。label[0].length得到就是6了。
      

  9.   

    public class NullPointerException
    extends RuntimeException
    当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括: 调用 null 对象的实例方法。 
    访问或修改 null 对象的字段。 
    将 null 作为一个数组,获得其长度。 
    将 null 作为一个数组,访问或修改其时间片。 
    将 null 作为 Throwable 值抛出。 
    应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。