Excepcion al cancelar una ventana

Iniciado por 1mpuls0, 13 Octubre 2008, 09:57 AM

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

1mpuls0

Hola amigos del foto, me gustaria que me ayudaran con este metodo como puedo arreglarlo, estoy trabajando en un programa en el cual tengo que crear N botones(representan conjuntos) los cuales no puede repetir su nombre asi que utilizo listas pero si el nombre del elemento ya existe aun asi me retorna el nombre del conjunto pero para esto mando llamar el mismo metodo( nombreConjunto(); )  y quiero que me digan si hay una mejor opcion; mi segundo problema es que al cerrar la ventana donde pido el nombre del conjunto por ejemplo si doy click en cancelar o cerrar ventana me tira las excepciones que vienen despues del codigo, les agradecere mucho su ayuda!!

saludos

PD. No quise escribir todo el codigo por que es mucho, pero si es necesario para una mejor apreciacion(aunque no lo creo) me avisan...



public String nombreConjunto()
     {
        
        try
              {
                 nombreBoton = JOptionPane.showInputDialog(null,"Escribe el nombre del conjunto","Nombre del conjunto",1);
                 nodo encontrado;
                 encontrado =  listina.buscarlis(nombreBoton);
            if(encontrado != null)
            {
               JOptionPane.showMessageDialog(null,"El nombre del conjunto ya existe");
               nombreConjunto();
            }
            else
            {
               listina.insertarprimero(nombreBoton);
            }
              }
         catch(NullPointerException exception)
         {}
              
              while(nombreBoton.equals("")||nombreBoton.charAt(0)==' ')
              {   
                 try
            {
               nombreBoton = JOptionPane.showInputDialog(null,"Escribe el nombre del conjunto","Nombre del conjunto",1);
            }         
            catch(NullPointerException exxx)
            {}
            
              }
        

        
        return nombreBoton;
     }



ClickC1
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
       at 1mpuls0.productoCartesiano.nombreConjunto(productoCartesiano.java:529
)
       at 1mpuls0.productoCartesiano.agregarBoton(productoCartesiano.java:465)
       at 1mpuls0.productoCartesiano.botConjuntosActionPerformed(productoCartes
iano.java:373)
       at 1mpuls0.productoCartesiano.access$000(productoCartesiano.java:12)
       at 1mpuls0.productoCartesiano$1.actionPerformed(productoCartesiano.java:
118)
       at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:19
95)
       at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
a:2318)
       at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:387)
       at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242
)
       at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:236)
       at java.awt.Component.processMouseEvent(Component.java:6038)
       at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
       at java.awt.Component.processEvent(Component.java:5803)
       at java.awt.Container.processEvent(Container.java:2058)
       at java.awt.Component.dispatchEventImpl(Component.java:4410)
       at java.awt.Container.dispatchEventImpl(Container.java:2116)
       at java.awt.Component.dispatchEvent(Component.java:4240)
       at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322
)
       at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)

       at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
       at java.awt.Container.dispatchEventImpl(Container.java:2102)
       at java.awt.Window.dispatchEventImpl(Window.java:2429)
       at java.awt.Component.dispatchEvent(Component.java:4240)
       at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
       at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:273)
       at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:183)
       at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:173)
       at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)

       at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

       at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Press any key to continue...
abc

juancho77

Citarjava.lang.NullPointerException

El "return" de ese metodo devuelve nombreBoton. Si haces click en cancelar, se producen las excepciones que son correctamente atrapadas en el codigo porque se intenta operar con un String nulo. Debes incluir codigo para atrapar la excepcion que se produciria al final si intentas retornar nombreBoton como nulo.
Por ejemplo:

     
Código (java) [Seleccionar]
try {
         return nombreBoton;
       }
       catch (Exception e) { return null }

     


Eso te soluciona el error en el metodo que posteaste.
Saludos

1mpuls0

Cita de: juancho77 en 14 Octubre 2008, 06:28 AM
     
Código (java) [Seleccionar]
try {
         return nombreBoton;
       }
       catch (Exception e) { return null }

     


Eso te soluciona el error en el metodo que posteaste.
Saludos

Hola si me funciono para el momento en que se cierra la ventana pero aun asi cuando cancelo el JOptionPane me retorna null y crea un boton sin nombre!!, pero para mi trabajo creo que no hay problema! aunque si me hubiera gustado que no regresara el valor en caso de que se cancelara o cerra la ventana


saludos
abc

juancho77

Y claro, porque llamas al Dialog desde una instruccion setText() del boton. Entonces, cuando retorna null crea un String null para el texto del boton. Para solucionar eso tendrias que poner la llamada al dialog en otra parte. Por ejemplo:
Código (java) [Seleccionar]

String textoBoton = JOptionPane.showMessageDialog();
if (! textoBoton.equals(null))  //si textoBoton no es igual a null
        // establecerel texto del boton
else  //si textoBoton es null
       // mostras un mensaje de error o pones un nombre generico.

   

1mpuls0

A oks si que me ha servido, como no pensarlo antes xD, buen gracias...   ;D
gracias juancho77

Citar:
String textoBoton = JOptionPane.showMessageDialog();if (! textoBoton.equals(null))  //si textoBoton no es igual a null        // establecerel texto del botonelse  //si textoBoton es null       // mostras un mensaje de error o pones un nombre generico.
abc