Hola buenas tardes, yo tambien tengo un problema de nullPointerException que no se muy bien como solucionar, me explico, se trata de una interfaz grafica swing que consiste en el juego ahorcado, cuando se da al boton "jugar", se instancia un nuevo ahorcado con una palabra elegida al azar de un xml. Luego deberemos dar a los botones en los que estan las letras para ir acertando la palabra. El problema es este, que al instanciar el Ahorcado dentro de un if, (si se pulsa el boton "jugar") no puedo usar mas tarde los metodos de ese objeto en cuestion. aqui os dejo el codigo:
Código Java:
Ver original if(jugar==botonJugar){//si se pulsa el boton 'jugar' se crea una nueva instancia del objeto con el numero de letras deseado
System.
out.
println("Se ha pulsado jugar"); try {
Ahorcado a1=new Ahorcado(numLetras);//se crea la palabra del ahorcado de la lista con las palabras que tienen el numero de letras que se pasa
a1.setPalabra(a1.getPalabra());
System.
out.
println(a1.
getRespuesta()); respuestaGr.setText(a1.getRespuesta());
botonJugar.setEnabled(false);
e1.printStackTrace();
// TODO Auto-generated catch block
e1.printStackTrace();
}
}else{//si no se pulsa el boton 'jugar' (se pulsa una letra) se utiliza el metodo tirar con esa letra
System.
out.
println("Se ha pulsado "+e.
getActionCommand()+" para comenzar a adivinar la palabra"); char letraElegida=e.getActionCommand().charAt(0);
//System.out.println("LETRA: "+letraElegida); LO HACE BIEN
try{
a1.tirar(letraElegida);//da nullPointerException, a1 no existe ya que se crea dentro del if...
respuestaGr.setText(a1.getRespuesta());//para actualizar la respuesta con cada tirada
if(a1.completo()==false){
JOptionPane.
showMessageDialog(null,
"Se acabaron tus vidas. Palabra: "+a1.
getPalabra(),
"Mensaje",
JOptionPane.
ERROR_MESSAGE); //Se completa la respuestaGr(respuesta grafica con la palabra) y se modifica el xml añadiendo 1 al atributo 'aciertos' de esa palabra suponiendo que exista, si no se hace
try{
SAXBuilder builder=new SAXBuilder();
org.
jdom2.
Document doc
=builder.
build("palabras.xml");
}catch(JDOMException j){
j.printStackTrace();
// TODO Auto-generated catch block
e1.printStackTrace();
}
}else{
JOptionPane.
showMessageDialog(null,
"Enhorabuena. Palabra: "+a1.
getPalabra()+ "acertada",
"Mensaje",
JOptionPane.
ERROR_MESSAGE);
}
nul.printStackTrace();
}
}
}