elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Solucionado] java.lang.NullPointerException por qué?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] java.lang.NullPointerException por qué?  (Leído 5,368 veces)
Nakatsukasa Itero

Desconectado Desconectado

Mensajes: 22


Shark


Ver Perfil
[Solucionado] java.lang.NullPointerException por qué?
« en: 9 Mayo 2012, 21:32 pm »

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:
Código:
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)
Código:
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...


« Última modificación: 10 Mayo 2012, 02:02 am por Nakatsukasa Itero » En línea

Kanashimi no Itero
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Validar firma digita error java.lang.NullPointerException
Windows
mauro_ms 0 3,060 Último mensaje 13 Abril 2016, 22:36 pm
por mauro_ms
Ayuda por favor java.lang.NullPointerException
Java
TheZeck 1 2,599 Último mensaje 2 Mayo 2017, 00:55 am
por HardC0d3
Error java.lang.Byte cannot be cast to java.lang.Integer
Java
S4ms3pi0l__ 1 4,049 Último mensaje 24 Agosto 2019, 18:25 pm
por ivancea96
java.lang.NullPointerException en funcion para polimeros
Java
juligarc10 1 2,794 Último mensaje 25 Septiembre 2019, 21:13 pm
por rub'n
Ayudaaaaa. Exception in thread "main" java.lang.NullPointerException en java
Java
Ruusa 7 7,933 Último mensaje 26 Junio 2022, 15:14 pm
por rub'n
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines