一个Panel,往里头加Label,居然报空指针,大家来看看:FocusablePanel numberGrid = new FocusablePanel(new GridLayout(6,6));
numberLabels = new JLabel[6][6];
          
        for (int i = 1; i < 6; i++)
        {
         for (int j = 0; j < 6; j++)
         {
         if(i==5&&j>=3)
         {
         break;
         }
         else
         {
         numberLabels[i][j] = new JLabel(" ", JLabel.RIGHT);
         numberLabels[i][j].setForeground(Color.blue);
         numberLabels[i][j].setBackground(Color.blue);
         numberLabels[i][j].setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
         numberLabels[i][j].addMouseListener(this);
         }
         }
        }

        numberGrid.addFocusListener(this);
        
            
        
        for (int i = 0; i < 6; i++)
        {
            for (int j = 0; j < 6; j++)
            {
             if(i==5&&j>=3)
             {
             break;
             }
             else
             {
                            numberGrid.add(numberLabels[i][j]); 
             }
            }
        }numberGrid.add(numberLabels[i][j]);  /这里报错:Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1019)
at java.awt.Container.add(Container.java:351)搞不懂,杂回事哦?

解决方案 »

  1.   

    for (int i = 1; i < 6; i++)
    .....
    for (int i = 0; i < 6; i++)
    .....当i==0时,numberLabels[0][0]到numberLabels[0][5]没有创建实例,后面引用的时候,就是 NullPointerException 了
      

  2.   

    或者把前一个for 改成从0开始,for (int i = 0; i < 6; i++)
    .....
    for (int i = 0; i < 6; i++)
    或者把后一个改成从1开始
    for (int i = 1; i < 6; i++)
    .....
    for (int i = 1; i < 6; i++)