Ver Mensaje Individual
  #5 (permalink)  
Antiguo 28/04/2014, 12:03
borjapg9
 
Fecha de Ingreso: abril-2014
Mensajes: 2
Antigüedad: 10 años
Puntos: 0
Respuesta: Errror NullPointer Exeception

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
  1. public void actionPerformed(ActionEvent e) {
  2.         Object jugar=e.getSource();
  3.         if(jugar==botonJugar){//si se pulsa el boton 'jugar' se crea una nueva instancia del objeto con el numero de letras deseado
  4.             System.out.println("Se ha pulsado jugar");
  5.             int numLetras=Integer.parseInt(JOptionPane.showInputDialog("Elija numero de letras: "));
  6.             try {
  7.                 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
  8.                 a1.setPalabra(a1.getPalabra());
  9.                 System.out.println(a1.getRespuesta());
  10.                 respuestaGr.setText(a1.getRespuesta());
  11.                 botonJugar.setEnabled(false);
  12.             } catch (NumberFormatException e1) {
  13.                 e1.printStackTrace();
  14.             } catch (IOException e1) {
  15.                 // TODO Auto-generated catch block
  16.                 e1.printStackTrace();
  17.             }
  18.         }else{//si no se pulsa el boton 'jugar' (se pulsa una letra) se utiliza el metodo tirar con esa letra
  19.             System.out.println("Se ha pulsado "+e.getActionCommand()+" para comenzar a adivinar la palabra");
  20.                 char letraElegida=e.getActionCommand().charAt(0);
  21.                 //System.out.println("LETRA: "+letraElegida); LO HACE BIEN
  22.                 try{
  23.                     a1.tirar(letraElegida);//da nullPointerException, a1 no existe ya que se crea dentro del if...
  24.                     respuestaGr.setText(a1.getRespuesta());//para actualizar la respuesta con cada tirada
  25.                     if(a1.completo()==false){
  26.                         JOptionPane.showMessageDialog(null,"Se acabaron tus vidas. Palabra: "+a1.getPalabra(),"Mensaje",JOptionPane.ERROR_MESSAGE);
  27.                         //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
  28.                         try{
  29.                             SAXBuilder builder=new SAXBuilder();
  30.                             org.jdom2.Document doc=builder.build("palabras.xml");
  31.                             Element raiz=doc.getRootElement();
  32.                            
  33.                         }catch(JDOMException j){
  34.                             j.printStackTrace();
  35.                         } catch (IOException e1) {
  36.                             // TODO Auto-generated catch block
  37.                             e1.printStackTrace();
  38.                         }
  39.                     }else{
  40.                         JOptionPane.showMessageDialog(null,"Enhorabuena. Palabra: "+a1.getPalabra()+ "acertada","Mensaje",JOptionPane.ERROR_MESSAGE);
  41.                        
  42.                     }
  43.                 }catch(NullPointerException nul){
  44.                     nul.printStackTrace();
  45.                 }
  46.         }
  47.     }