Foros del Web » Programación para mayores de 30 ;) » Java »

MVC con JDialog

Estas en el tema de MVC con JDialog en el foro de Java en Foros del Web. Buenos días Siguiendo con mi proyecto, tengo toda la interface realizada con MVC, pero al pasar de un Jdialog a otro, me sale un error, ...
  #1 (permalink)  
Antiguo 22/05/2014, 04:16
 
Fecha de Ingreso: febrero-2013
Mensajes: 33
Antigüedad: 11 años, 4 meses
Puntos: 0
MVC con JDialog

Buenos días

Siguiendo con mi proyecto, tengo toda la interface realizada con MVC, pero al pasar de un Jdialog a otro, me sale un error, y no sé que le pasa, no veo errores de sintaxis ni lógicos.

Tengo una ventana de inicio de sesión (JDialog), que logea a la base de datos, y pasa a otra pantalla(que es JFrame), esta pantalla tiene un menú con 7opciones, y al pulsar aceptar en dando en un radioButton, me sale el error:

Código Exception:
Ver original
  1. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
  2.     at vista.Menu_Ppal.actionPerformed(Menu_Ppal.java:443)
  3.     at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
  4.     at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
  5.     at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
  6.     at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
  7.     at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
  8.     at java.awt.Component.processMouseEvent(Unknown Source)
  9.     at javax.swing.JComponent.processMouseEvent(Unknown Source)
  10.     at java.awt.Component.processEvent(Unknown Source)
  11.     at java.awt.Container.processEvent(Unknown Source)
  12.     at java.awt.Component.dispatchEventImpl(Unknown Source)
  13.     at java.awt.Container.dispatchEventImpl(Unknown Source)
  14.     at java.awt.Component.dispatchEvent(Unknown Source)
  15.     at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
  16.     at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
  17.     at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
  18.     at java.awt.Container.dispatchEventImpl(Unknown Source)
  19.     at java.awt.Window.dispatchEventImpl(Unknown Source)
  20.     at java.awt.Component.dispatchEvent(Unknown Source)
  21.     at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
  22.     at java.awt.EventQueue.access$000(Unknown Source)
  23.     at java.awt.EventQueue$1.run(Unknown Source)
  24.     at java.awt.EventQueue$1.run(Unknown Source)
  25.     at java.security.AccessController.doPrivileged(Native Method)
  26.     at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
  27.     at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
  28.     at java.awt.EventQueue$2.run(Unknown Source)
  29.     at java.awt.EventQueue$2.run(Unknown Source)
  30.     at java.security.AccessController.doPrivileged(Native Method)
  31.     at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
  32.     at java.awt.EventQueue.dispatchEvent(Unknown Source)
  33.     at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
  34.     at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
  35.     at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
  36.     at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  37.     at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  38.     at java.awt.EventDispatchThread.run(Unknown Source)

El Código es muy grande, pero los fragmentos son:

Código Java:
Ver original
  1. @Override
  2.     public void actionPerformed(ActionEvent e) {
  3.         // TODO Auto-generated method stub
  4.  
  5.         if (e.getSource() == btnAceptar) {
  6.            
  7.            
  8.             if (rdbtnAltaFactura.isSelected()) {
  9.                 miControlador.mostrarVentanaAltaFactura();
  10.             }
  11.             if (rdbtnConsultaDatos.isSelected()) {
  12.                 miControlador.mostrarVentanaConsulta();
  13.                                  //esta es la que pulso
  14.             }
  15.             if (rdbtnIntroducirNuevaEmpresa.isSelected()) {
  16.                 miControlador.mostrarVentanaAltaEmpresa();
  17.             }
  18.             if (rdbtnIntroducirNuevoAutonomo.isSelected()) {
  19.                 miControlador.mostrarVentanaIntroNuevoAutonomo();
  20.             }

La clase Controlador
Código Java:
Ver original
  1. /**
  2.      * @return the miMenu_ConsultaFactura
  3.      */
  4.     public Menu_ConsultaFactura getMiMenu_ConsultaFactura() {
  5.         return miMenu_ConsultaFactura;
  6.     }
  7.  
  8.     /**
  9.      * @param miMenu_ConsultaFactura the miMenu_ConsultaFactura to set
  10.      */
  11.     public void setMiMenu_ConsultaFactura(
  12.             Menu_ConsultaFactura miMenu_ConsultaFactura) {
  13.         this.miMenu_ConsultaFactura = miMenu_ConsultaFactura;
  14.     }
  15.  
  16.         public void mostrarVentanaConsultaFactura() {
  17.         miMenu_ConsultaFactura.setVisible(true);
  18.     }

Y esta la clase Consulta. Todas son muy parecidas, por lo que sabiendo arreglar una, arreglo todas. No he incluido el actionPerformed,...

Código Java:
Ver original
  1. public class Menu_Consulta extends JDialog implements ActionListener {
  2.  
  3.     /**
  4.      *
  5.      */
  6.     private static final long serialVersionUID = 1L;
  7.     private final ButtonGroup buttonGroup = new ButtonGroup();
  8.     private JButton okButton = new JButton("OK");
  9.     private JButton cancelButton = new JButton("Cancel");
  10.     private JRadioButton rdbtnDatosAutonomo = new JRadioButton(
  11.             "Datos Aut\u00F3nomo");
  12.     private JRadioButton rdbtnDatosEmpresa = new JRadioButton("Datos Empresa");
  13.     private JRadioButton rdbtnFactura = new JRadioButton("Factura");
  14.     private Nuevo_controlador miControlador;
  15.  
  16.     public Nuevo_controlador getControlador() {
  17.         return miControlador;
  18.     }
  19.  
  20.     public void setControlador(Nuevo_controlador miControlador) {
  21.         this.miControlador = miControlador;
  22.     }
  23.  
  24.     /**
  25.      * Create the application.
  26.      */
  27.     public Menu_Consulta() {
  28.         this.setTitle("Consulta de Datos");
  29.  
  30.         setBounds(100, 100, 400, 300);
  31.         getContentPane().setLayout(new BorderLayout());
  32.         {
  33.             JPanel buttonPane = new JPanel();
  34.             buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
  35.             getContentPane().add(buttonPane, BorderLayout.SOUTH);
  36.  
  37.             okButton.setActionCommand("OK");
  38.             buttonPane.add(okButton);
  39.             getRootPane().setDefaultButton(okButton);
  40.  
  41.             {
  42.                 JButton cancelButton = new JButton("Cancel");
  43.                 cancelButton.setActionCommand("Cancel");
  44.                 buttonPane.add(cancelButton);
  45.             }
  46.         }
  47.         {
  48.             JPanel panel = new JPanel();
  49.             getContentPane().add(panel, BorderLayout.CENTER);
  50.             panel.setLayout(null);
  51.  
  52.             JPanel panel_1 = new JPanel();
  53.             panel_1.setBounds(134, 72, 115, 85);
  54.             panel.add(panel_1);
  55.             panel_1.setLayout(new FormLayout(new ColumnSpec[] {
  56.                     FormFactory.LABEL_COMPONENT_GAP_COLSPEC,
  57.                     ColumnSpec.decode("97px"),
  58.                     FormFactory.LABEL_COMPONENT_GAP_COLSPEC,
  59.                     ColumnSpec.decode("63px"), }, new RowSpec[] {
  60.                     FormFactory.LINE_GAP_ROWSPEC, RowSpec.decode("23px"),
  61.                     FormFactory.LINE_GAP_ROWSPEC, RowSpec.decode("23px"),
  62.                     FormFactory.RELATED_GAP_ROWSPEC,
  63.                     FormFactory.DEFAULT_ROWSPEC, }));
  64.             {
  65.                 buttonGroup.add(rdbtnDatosAutonomo);
  66.                 panel_1.add(rdbtnDatosAutonomo, "2, 2, 3, 1, left, top");
  67.             }
  68.             {
  69.                 buttonGroup.add(rdbtnDatosEmpresa);
  70.                 panel_1.add(rdbtnDatosEmpresa, "2, 4, left, top");
  71.             }
  72.             {
  73.                 buttonGroup.add(rdbtnFactura);
  74.                 panel_1.add(rdbtnFactura, "2, 6, left, top");
  75.             }
  76.         }
  77.     }


Muchas gracias por la ayuda, estoy desesperado y tengo 7 dias para entregarlo,..
  #2 (permalink)  
Antiguo 22/05/2014, 04:31
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 9 meses
Puntos: 454
Respuesta: MVC con JDialog

¿Cual es la línea 43 de Menu_Ppal.java? ( at vista.Menu_Ppal.actionPerformed(Menu_Ppal.java:443 )

Viendo el código, o bien miControlador es null, o bien cualquiera de los rdbtn* que usas ahí. La línea 443 te dirá exactamente cual de ellos es.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 22/05/2014, 04:33
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 6 meses
Puntos: 22
Respuesta: MVC con JDialog

El error te ocurre solo seleccionando ese radiobutton en concreto?? o da igual el que selecciones??

Código Java:
Ver original
  1. if (rdbtnConsultaDatos.isSelected()) {
  2.                 miControlador.mostrarVentanaConsulta();
  3.                                  //esta es la que pulso
  4.             }

La variable miControlador, esta correctamente inicializada cuando llegas a esa sección de código??

Perdón chuidiang, no vi tu respuesta.
  #4 (permalink)  
Antiguo 22/05/2014, 05:09
 
Fecha de Ingreso: febrero-2013
Mensajes: 33
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: MVC con JDialog

da igual cualquier radio button.

miControlador está inicializado en el main, por lo que en principio, no tiene que estar a null
Código Java:
Ver original
  1. public static void main(String[] args) {
  2.         Principal miPrincipal = new Principal();
  3.         miPrincipal.iniciar();
  4.     }
  5.  
  6.     /**
  7.      * Permite instanciar todas las clases con las que trabaja el sistema
  8.      */
  9.     private void iniciar() {
  10.         /* Se instancian las clases */
  11.         miMenu_Ppal = new Menu_Ppal();
  12.         miModelo = new Modelo();
  13.         miControlador = new Nuevo_controlador();
  14.         miMenu_ConsultaEmpresa = new Menu_ConsultaEmpresa();
  15.         miMenu_AltaFactura = new Menu_AltaFactura();
  16.         miMenu_Consulta = new Menu_Consulta();
  17.         //miMenu_Inicio_sesión = new Menu_Inicio_sesión();
  18.         miMenu_IntroNuevoAutonomo = new Menu_AltaAutonomo();
  19.         miMenu_Mod_Datos_Contratado = new Menu_Mod_Datos_Contratado();
  20.         miMenu_Tabla = new Menu_Tabla();
  21.         miMenu_ConsultaFactura = new Menu_ConsultaFactura();
  22.         miAltaEmpresa = new Menu_AltaEmpresa();
  23.         miMenu_Inicio = new Menu_Inicio();
  24.         miMenu_Logo = new Menu_Logo();
  25.         miMenu_Mod_Datos_Empresa = new Menu_Mod_Datos_Empresa();
  26.         miMenu_ConsultaAutonomo = new Menu_ConsultaAutonomo();
  27.  
  28.  
  29.         /* Se establecen las relaciones entre clases */
  30.         miMenu_Ppal.setControlador(miControlador);
  31.         miModelo.setControlador(miControlador);
  32.         miMenu_ConsultaEmpresa.setControlador(miControlador);
  33.         miMenu_AltaFactura.setControlador(miControlador);
  34.         miMenu_Consulta.setControlador(miControlador);
  35.         //miMenu_Inicio_sesión.setControlador(miControlador);
  36.         miMenu_IntroNuevoAutonomo.setControlador(miControlador);
  37.         miMenu_Mod_Datos_Contratado.setControlador(miControlador);
  38.         miMenu_Tabla.setControlador(miControlador);
  39.         miMenu_ConsultaFactura.setControlador(miControlador);
  40.         miAltaEmpresa.setControlador(miControlador);
  41.         miMenu_Inicio.setControlador(miControlador);
  42.         miMenu_Logo.setControlador(miControlador);
  43.         miMenu_Mod_Datos_Empresa.setControlador(miControlador);
  44.         miMenu_ConsultaAutonomo.setControlador(miControlador);
  45.  
  46.         /* Se establecen relaciones con la clase coordinador */
  47.         miControlador.setMiMenu_Inicio(miMenu_Inicio);
  48.         miControlador.setMiAltaEmpresa(miAltaEmpresa);
  49.         miControlador.setMiMenu_AltaFactura(miMenu_AltaFactura);
  50.         miControlador.setMiMenu_Consulta(miMenu_Consulta);
  51.         miControlador.setMiMenu_ConsultaAutonomo(miMenu_ConsultaAutonomo);
  52.         miControlador.setMiMenu_ConsultaEmpresa(miMenu_ConsultaEmpresa);
  53.         //miControlador.setMiMenu_Inicio_sesión(miMenu_Inicio_sesión);
  54.         miControlador.setMiMenu_IntroNuevoAutonomo(miMenu_IntroNuevoAutonomo);
  55.         miControlador.setMiMenu_Logo(miMenu_Logo);
  56.         miControlador.setMiMenu_Mod_Datos_Contratado(miMenu_Mod_Datos_Contratado);
  57.         miControlador.setMiMenu_Ppal(miMenu_Ppal);
  58.         miControlador.setMiMenu_Tabla(miMenu_Tabla);
  59.         miControlador.setMiModelo(miModelo);
  60.  
  61.         miMenu_Inicio.setVisible(true);
  62.     }

Gracias por la rapidez

Última edición por vankish_ru; 22/05/2014 a las 05:09 Razón: dar las gracas
  #5 (permalink)  
Antiguo 22/05/2014, 06:00
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 9 meses
Puntos: 454
Respuesta: MVC con JDialog

¿El nullpointer da entonces en una linea miControlador.mostrar* ? Si es asi, en esa línea donde la excepción miControlador es null. Revisa que lo estás inicializando correctamente y revisa que luego alguien no lo pone a null.

Es un error típico (no quiero decir que sea tu caso, pero pudiera) tener sin querer dos variables miControlador, una como atributo de la clase y otra local al método, e inicializar una y usar la otra que está sin inicializar.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 23/05/2014, 05:13
 
Fecha de Ingreso: febrero-2013
Mensajes: 33
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: MVC con JDialog

Me da en todos los formularios que quiero abrir. En teoria están inicializadas todas en el método main, por lo que sólamente se debería de llamar al método setvisible....no entiendo donde está el fallo,....

Gracias por la colaboracion
  #7 (permalink)  
Antiguo 26/05/2014, 02:31
 
Fecha de Ingreso: febrero-2013
Mensajes: 33
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: MVC con JDialog

Bueno, ya lo tengo medio solucionado, he reorganizado mis clases del main y parece que funciona. seguiré experimentando.

No entendía el porqué daba null pointer, sabiendo que había instanciado y relacionado las clases
  #8 (permalink)  
Antiguo 26/05/2014, 03:16
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 6 meses
Puntos: 22
Respuesta: MVC con JDialog

Cita:
Iniciado por vankish_ru Ver Mensaje
Bueno, ya lo tengo medio solucionado, he reorganizado mis clases del main y parece que funciona. seguiré experimentando.

No entendía el porqué daba null pointer, sabiendo que había instanciado y relacionado las clases
Lo más probable, es que en algún punto de tu código la variable "miControlador" perdiese el valor.
Pero sin tener el código delante y poder hacer una traza, las respuestas que se dan son meramente intuitivas.
Que IDE utilizas? Sería interesante que aprendieses a utilizar el Debug, ya que te ayudaría a solucionar el 99% de estos problemas.

Un saludo.
  #9 (permalink)  
Antiguo 26/05/2014, 05:24
 
Fecha de Ingreso: febrero-2013
Mensajes: 33
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: MVC con JDialog

Creo, que lo que me había pasado sin darme cuenta, es que no inicializaba el programa desde el main, sino, que al darle , lo hacía sólo desde la ventana (sí, lo sé, es un error de pollo,....)

Tengo una duda más sobre el MVC y jDialog, tengo que evaluar un checkbox en un Jdialog, y si está activo, me sale una ventana donde debo de ingresar la ruta de una imagen, y quiero coger la ruta que le ponga para insertarla en la db, cómo puedo devolver ese String a la ventana padre con MVC?

gracias
  #10 (permalink)  
Antiguo 27/05/2014, 05:07
 
Fecha de Ingreso: febrero-2013
Mensajes: 33
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: MVC con JDialog

Me respondo, haciendo una clase tipo interface que lea/recoja el dato (getter and setter), instanciandola en el main() y en el controlador.

Etiquetas: clase, jdialog, mvc
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:00.