Ayuda, tengo un proyecto que entregar para hoy y me sale el siguiente error y no se como corregirlo

 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at Figuras.PanelDibujo.paintComponent(PanelDibujo.java:134)
package Figuras;

import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JPanel;

public class PanelDibujo extends JPanel {
   
    private final Random numAleatorio = new Random();
    private int altura;
    private int anchura;
    private int numLineas;
    private int numRectangulos;
    private int numOvalos;
    private MiFigura figuras[];
   
public PanelDibujo ( int anchura,
                     int altura,
                     int numLineas,
                     int numOvalos,
                     int numRectangulos) {
    asignaNumLineas(numLineas);
    asignaNumRectangulos(numRectangulos);
    asignaNumOvalos(numOvalos);
    asignaAnchura(anchura);
    asignaAltura(altura);
    asignaFiguras();
     
   
    for (int indice = 0; indice < 3; indice++){
        construyeFiguras(indice);
    }
}    
private void asignaNumLineas(int num) {
    this.numLineas = num;
}
private void asignaNumRectangulos(int num) {
    this.numRectangulos = num;
}
private void asignaNumOvalos(int num) {
    this.numOvalos = num;
}
private void asignaFiguras() {
    this.figuras = new MiFigura[this.numLineas+this.numOvalos+this.numRectangulos];
}
private void asignaAltura(int altura) {
    this.altura = altura;  
}
private void asignaAnchura(int anchura) {    
    this.anchura = anchura;
}
private void construyeFiguras(int figura){
    int numFiguras;
    switch (figura) {
        case 0:
            numFiguras = obtieneNumLineas();
            break;
        case 1:
            numFiguras = obtieneNumRectangulos();
            break;
        case 2:
            numFiguras = obtieneNumOvalos();
            break;
        default:
            numFiguras=0;        
    }
    for (int indice = 0; indice < numFiguras; indice++) {
        int x1 = numAleatorio.nextInt(obtieneAnchura());
        int y1 = numAleatorio.nextInt(obtieneAltura());
        int x2 = numAleatorio.nextInt(obtieneAnchura());
        int y2 = numAleatorio.nextInt(obtieneAltura());
        Color micolor = new Color(
            numAleatorio.nextInt(256),
            numAleatorio.nextInt(256),
            numAleatorio.nextInt(256));
        boolean mirelleno = numAleatorio.nextBoolean();
        switch (figura) {
            case 0:
                figuras[indice] = new MiLinea (x1,
                                              y1,
                                              x2,
                                              y2,
                                              micolor);
                break;
            case 1:
                figuras[indice] = new MiRectangulo (x1,
                                              y1,
                                              x2,
                                              y2,
                                              micolor,
                                              mirelleno);
                break;
            case 2:
                figuras[indice] = new MiOvalo (x1,
                                              y1,
                                              x2,
                                              y2,
                                              micolor,
                                              mirelleno);
                break;
        }        
    }        
}
       
public int obtieneNumLineas() {
    return this.numLineas;
}
public int obtieneNumRectangulos() {
    return this.numRectangulos;
}
public int obtieneNumOvalos() {
    return this.numOvalos;
}
public int obtieneAltura() {
    return this.altura;
}
public int obtieneAnchura() {
    return this.anchura;
}
//------------------------//
@Override
public String toString() {
    return String.format("%s : %d %s : %d %s : %d \n ",
            "Lineas", obtieneNumLineas(),
            "Rectangulos", obtieneNumRectangulos(),
            "Ovalos", obtieneNumOvalos());
}

    @Override
    public void paintComponent(Graphics g) {
    super.paintComponents(g);
    for ( MiFigura figura:figuras)
          figura.dibujar(g);
}
}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

delay

 

Si pides un aplazamiento en la fecha de entrega (aka delay) de tu software, no sería la primera que alguien lo hace. A veces, no queda otro remedio. Es preferible hacer esto a entregar el software con errores, como algunos hacen.


P.D.: Edita tu publicación colocando el código entre las etiquetas <code> y </code>. Opcionalmente puedes formatear el código en http://codebeautify.org/javaviewer.

~~~

El error:

El error: java.lang.NullPointerException indica que un objeto que creías válido es en realidad null, por ejemplo esto sería un NullPointerException:

String cadena = null;
cadena.length(); // <-- NullPointerException

En tu caso tienes que ver que hay en la línea 134 del archivo PanelDibujo.java ahí es donde tu referencia es nula.

Eso es exactamente lo que el error dice de forma más concisa

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at Figuras.PanelDibujo.paintComponent(PanelDibujo.java:134)