[Solucionado] java.lang.NullPointerException por qué?

Iniciado por Nakatsukasa Itero, 9 Mayo 2012, 21:32 PM

0 Miembros y 1 Visitante están viendo este tema.

Nakatsukasa Itero

hola, ya de seguro me kieren retirar de la programacion en java pero todavia no....  ;D
reulta que tengo un formulario X (para llenar una renta de un juego); tengo un bonton que valida que los datos de la renta (cliente, juegos y controles) están correctos, en la parte que llama a una ventana externa (el mismo boton) me tira un NullPointerException, aqui está el boton que llama a la ventana externa para aceptar la renta:

btnRealizarRenta.setOnAction(new EventHandler<ActionEvent>() {
           @Override
           public void handle(ActionEvent t) {
               System.out.println("1----------");
               if(elCliente==null || aListJuegos==null){
                   System.out.println("2");
                   int opcion = JOptionPane.showOptionDialog(null, "No se ha encontrado cliente o juego para la renta\nPor favor realiza la busqueda correspondiente para poder realizar la renta", "Espera", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);
                   System.out.println("3");
                   System.out.println("opcion "+opcion);
               }
               else{
                   System.out.println("4");
                   //RentaInterna ri=new RentaInterna(elCliente,ctr,aListJuegos,"EXTERNA");
                   try{
                       System.out.println("5");
                   RentaInterna ri=new RentaInterna(elCliente,ctr,aListJuegos,"EXTERNA");
                   System.out.println("6");
                   //RentaInterna ri=new RentaInterna(ctr,"EXTERNA");
                   Stage st = new Stage();
                   System.out.println("7");
                   Group rentafx = new Group();
                   System.out.println("8");
                   st.setScene(new Scene(rentafx, 715, 535));
                   System.out.println("9");
                   ri.start(st);
                   System.out.println("10");
                   //btnRealizarRenta.setDisable(true);
                   }
                   catch(Exception ex){
                       System.out.println("11");
                       System.out.println("-- "+ex.toString());
                       System.out.println("12");
                   }
                   aListJuegos=null;
                   System.out.println("13");
               }
               //deshabilitaTodo();//para asegurarse de los estados de las cosas
               t.consume();
               System.out.println("14");
           }
       });

los sout´s (System.out.println() los uso para hacer debbug y ver donde esta el problema) me llegan hasta el numero 9, despues de ahi, no pasa al 10 y se muestran el 11 y el 12 (la parte del catch())

aqui está TODO el codigo de la clase renta interna (verán que tengo rentas externas e internas por los distintos costructores e if´s que están puestos)

package javafxejemplo1;
import java.util.ArrayList;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.EventHandler;
import javafx.event.EventType;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.ScrollEvent;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import javax.swing.JOptionPane;

public class RentaInterna extends Application{
   //setDefaultCloseOperation(0);
   DatosRenta renta;
   DatosRentaExterna rentaE;
   Controlador cnt;
   Scene sc;
   MarcoRentaPane mrp;
   Tarifa tarifa;
   Modulo modulo;
   //---
   Renta renta_e;
   private String edicion="false";
   //---
   double disponible;
   double ultimaScaleX;
   double ultimaScaleY;
   double nuevaSceneX;
   double nuevaSceneY;
   double ultimaSceneX;
   double ultimaSceneY;
   double nuevaScaleX;
   double nuevaScaleY;
   int diferenciaX;
   int diferenciaY;
   final static int WIDTH=715;
   final static int HEIGHT=535;
   private double initX;
   private double initY;
   double nueva=1.0;
   //---
   Cliente cCliente;
   Controlador cControlador;
   ArrayList<Juegos> juegos;
   String Tipo;
   //---
   RentaInterna(){}
   RentaInterna(MarcoRentaPane mrp){
       this.mrp=mrp;
   }
   RentaInterna(MarcoRentaPane mrp, Tarifa tarifa){
       this.mrp=mrp;
       this.tarifa=tarifa;
   }
   RentaInterna(MarcoRentaPane mrp, Tarifa tarifa, Modulo modulo){
       this.mrp=mrp;
       this.tarifa=tarifa;
       this.modulo=modulo;
   }
   
   RentaInterna(MarcoRentaPane mrp, Tarifa tarifa, Modulo modulo, Controlador ctr){
       //setDefaultCloseOperation(0);
       this.mrp=mrp;
       this.cnt=ctr;
       this.tarifa=tarifa;
       this.modulo=modulo;
   }
   RentaInterna(MarcoRentaPane mrp, Tarifa tarifa, Modulo modulo, Controlador ctr, double disponible){
       //setDefaultCloseOperation(0);
       this.disponible=disponible;
       this.mrp=mrp;
       this.cnt=ctr;
       this.tarifa=tarifa;
       this.modulo=modulo;
   }
   RentaInterna(MarcoRentaPane mrp,Controlador ctr,String edicion, double disponible){
       this.mrp=mrp;
       this.cnt=ctr;
       this.edicion=edicion;
       this.disponible=disponible;
   }
   RentaInterna(Cliente cCliente,Controlador cControlador,ArrayList<Juegos> juegos,String edicion){
   //RentaInterna(Controlador cControlador,String edicion){
       //this.cCliente=cCliente;//este problemita me hacia toda la vida imposible, resulta que en realidad laguien (mi jefe) lo comentó para hacer pruebas y se le olvifó decirme :rolleyes:
       this.cControlador=cControlador;
       //this.juegos=juegos;
       this.edicion=edicion;
       System.out.println("todo bien hasta aqui");
   }
   RentaInterna(Cliente cliente,Controlador cControlador,String edicion){
   //RentaInterna(Controlador cControlador,String edicion){
       this.cCliente=cliente;
       this.cControlador=cControlador;
       //this.juegos=juegos;
       this.edicion="EXTERNA";
       System.out.println("todo bien hasta aqui");
   }
   public static void main(String[] args) {
        launch(args);
   }
   @Override
   public void start(final Stage primaryStage) {
      // cnt=new Controlador();
       //primaryStage.getOnCloseRequest();
       if("false".equalsIgnoreCase(edicion)){
           renta = new  DatosRenta(cnt,mrp,primaryStage,tarifa,modulo,disponible);
       }
       else if("EXTERNA".equalsIgnoreCase(edicion)){
           rentaE = new  DatosRentaExterna(cControlador,primaryStage,cCliente,juegos);
       //this.ctr=ctr;
           //renta = new  DatosRenta(primaryStage,cControlador,edicion);
       }
       else{
           //System.out.println("Edicion no es false");
           renta = new  DatosRenta(cnt,mrp,primaryStage,true,disponible);
       }
       final BorderPane root = new BorderPane();
       if("EXTERNA".equalsIgnoreCase(edicion)){
           root.setCenter(rentaE);
       }
       else{
           root.setCenter(renta);
       }
       root.setPrefWidth(WIDTH);//+15
       root.setPrefHeight(HEIGHT);//+15
       Scene Escena=new Scene(root);
       try{
           primaryStage.setScene(Escena);
       primaryStage.show();
       }
       catch(Exception ex){
           System.out.println("que px: ");
       }
       ultimaScaleX=1;
       ultimaScaleY=1;
       primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>(){//toma el evento de cierre y que haga lo que estan en el handle
           @Override
           public void handle(WindowEvent arg0) {
               arg0.consume();
               /*if("false".equals(edicion)){
                   int opcion = JOptionPane.showOptionDialog(null, "¿Estás seguro que deseas cancelar la renta?", "Alto", JOptionPane.ERROR_MESSAGE, JOptionPane.WARNING_MESSAGE, null, null, null);
                   if(opcion==0){//si
                       //primaryStage.show();
                       //System.out.println("no jala");
                   }
                   else{}
                   mrp.destruir();
               }
               else if("EXTERNA".equalsIgnoreCase(edicion)){}
               else{
                   //ctr.cancelarRenta(mrp.getRent().getTicket(), mrp.getRent().getCliente(), mrp.getRent().getJuegos(),mrp.getRent().getIdModulo(),"INTERNA", mrp.getRent().getControles(), Utilerias.obtenerFechaCorta()+" "+mrp.getRent().getInicio()+":00", Utilerias.obtenerFechaCorta()+" "+mrp.getRent().getExpira()+":00", mrp.getRent().getTotal(), mrp.getRent().getPromosion(),mrp.getRent().getIdEmpleado());
                   cnt.cancelarRenta(mrp.getRent().getTicket(), mrp.getRent().getCliente(), mrp.getRent().getJuegos(),mrp.getRent().getIdModulo(),"INTERNA", mrp.getRent().getControles(), Utilerias.obtenerFechaCorta()+" "+mrp.getRent().getInicio()+":00", Utilerias.obtenerFechaCorta()+" "+mrp.getRent().getExpira()+":00", mrp.getRent().getTotal(), mrp.getRent().getPromosion(),mrp.getRent().getIdEmpleado());
                   mrp.destruir();
               }*/
           }
           
       });
       primaryStage.widthProperty().addListener(new ChangeListener<Number>() {
           @Override
           public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneWidth, Number newSceneWidth) {
               nuevaSceneX=(double)newSceneWidth;
               nuevaScaleX=(nuevaSceneX/WIDTH);
               root.setScaleX(nuevaScaleX-0.050500);
               if(ultimaSceneX>nuevaSceneX){
                   root.setTranslateX(1.0);
               }
               ultimaScaleX=nuevaScaleX;
               root.setLayoutX(0);
               root.setLayoutY(0);
           }
       });
       primaryStage.heightProperty().addListener(new ChangeListener<Number>() {
           @Override
           public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneHeight, Number newSceneHeight) {
               nuevaSceneY=(double)newSceneHeight;
               nuevaScaleY=(nuevaSceneY/HEIGHT);
               root.setScaleY(nuevaScaleY-0.050500);
               if(ultimaSceneY>nuevaSceneY){
                   root.setTranslateY(1.0);
               }
               ultimaScaleY=nuevaScaleY;
               root.setLayoutX(0);
               root.setLayoutY(0);
           }
       });
       root.setOnMousePressed(new EventHandler<MouseEvent>() {
           @Override
           public void handle(MouseEvent me) {
               initX = me.getScreenX() - primaryStage.getX();
               initY = me.getScreenY() - primaryStage.getY();
           }
       });
       //when screen is dragged, translate it accordingly
       root.setOnMouseDragged(new EventHandler<MouseEvent>() {
           @Override
           public void handle(MouseEvent me) {
               primaryStage.setX(me.getScreenX() - initX);
               primaryStage.setY(me.getScreenY() - initY);
           }
       });
       root.setOnScroll(new EventHandler<ScrollEvent>(){
           @Override
           public void handle(ScrollEvent arg0) {
               nueva=(arg0.getDeltaY()/403);
               //if((primaryStage.getWidth()>=174.3) || (primaryStage.getHeight()>=145.2)){
                   root.setScaleX(nueva);
                   primaryStage.setWidth((nueva)*WIDTH);
//                    System.out.println("primary Stage Width "+primaryStage.getWidth());
                   root.setScaleY(nueva);
                   primaryStage.setHeight((nueva)*HEIGHT);
//                    System.out.println("Height "+primaryStage.getHeight());
                   //root.setLayoutX(0);
                   //root.setLayoutY(0);
               //}
           }
       });
     
   }
}


pero en el primer bloque code, como les digo me lanza la excepcion despues del sout 9 (ri.start(st)) y y ade ahí no sé cual sea el problema, la parde de DatosRentaExterna es igual a otras clases que tengo y que funcionana si problema o complicacion alguna.

agradezco vuestra ayuda desde CH  :¬¬  MX  >:D

Editado, en la clase de RentaInterna, no inicializaba el objeto cCliente, mi jefe lo deshabilito para poder hacer pruebas... pero ya está corregido  :rolleyes:, jamas me dijo...
Kanashimi no Itero