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);
}
}
- Inicie sesión o regístrese para enviar comentarios
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:
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
at Figuras.PanelDibujo.paintComponent(PanelDibujo.java:134)