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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Exception al rellenar un JList
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Exception al rellenar un JList  (Leído 4,684 veces)
mgc

Desconectado Desconectado

Mensajes: 30


Ver Perfil
Exception al rellenar un JList
« en: 14 Noviembre 2015, 18:29 pm »

Hola,

Tengo un problema al intentar rellenar un JList en swing, este método es el que utilizo para llenar la lista:

Código:
private void llenarLista(List lista) {
         DefaultListModel model = new DefaultListModel();
        for(int i=0; i<lista.size(); i++){
            model.addElement(lista.get(i));
        }
        listaExplotaciones.setModel(model);
    }

He puesto un botón en la pantalla, y su acción va a ser llenar el JList:

Código:
List lista=miCoordinador.consultarExplotaciones("user2");
        llenarLista(lista);

La lista es una consulta que se realiza en la clase objeto, el método es el siguiente:

Código:
public List consultarExplotaciones(String usuario) {
                List miLista=null;
Connection connection=null;
Conexion miConexion=new Conexion();
PreparedStatement statement=null;
ResultSet result=null;

ExplotacionesVo miExplotacion=new ExplotacionesVo();

connection=miConexion.getConnection();

String consulta="SELECT * FROM T_EXPLOTACIONES where USUARIO= ?";

try {
if (connection!=null) {
statement=connection.prepareStatement(consulta);
statement.setString(1, usuario);

result=statement.executeQuery();

while(result.next()==true){
miExplotacion=new ExplotacionesVo();
miExplotacion.setUsuario(result.getString("USUARIO"));
miExplotacion.setCodigo(result.getString("CODIGO"));
miExplotacion.setEspecie(result.getString("ESPECIE"));
miExplotacion.setTitular(result.getString("TITULAR"));
miExplotacion.setDireccion(result.getString("DIRECCION"));
miExplotacion.setLocalidad(result.getString("LOCALIDAD"));
miExplotacion.setCodigoPostal(result.getString("CODIGO_POSTAL"));
miExplotacion.setProvincia(result.getString("PROVINCIA"));
miExplotacion.setTelefono(result.getString("TELEFONO"));
                                        miLista.add(miExplotacion);
}
   miConexion.desconectar();
}else{
miLista=null;
}

   
} catch (SQLException e) {
System.out.println("Error en la consulta de la explotación: "+e.getMessage());
}

return miLista;
}

Cuando pulso el botón, me da la siguiente excepción:

Código:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at vista.VentanaExplotaciones.llenarLista(VentanaExplotaciones.java:254)
at vista.VentanaExplotaciones.btnLlenarActionPerformed(VentanaExplotaciones.java:222)
at vista.VentanaExplotaciones.access$000(VentanaExplotaciones.java:15)
at vista.VentanaExplotaciones$2.actionPerformed(VentanaExplotaciones.java:99)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
at java.awt.Dialog.show(Dialog.java:1082)
at java.awt.Component.show(Component.java:1651)
at java.awt.Component.setVisible(Component.java:1603)
at java.awt.Window.setVisible(Window.java:1014)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at controlador.Coordinador.mostrarVentanaExplotaciones(Coordinador.java:87)
at vista.VentanaInicio.btnExplotacionesActionPerformed(VentanaInicio.java:102)
at vista.VentanaInicio.access$000(VentanaInicio.java:22)
at vista.VentanaInicio$1.actionPerformed(VentanaInicio.java:65)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)


La línea 254 es esta:
Código:
model.addElement(lista.get(i));

¿Alguien sabe que es lo que me puede estar fallando?

Muchas gracias de antemano, saludos.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Exception al rellenar un JList
« Respuesta #1 en: 14 Noviembre 2015, 20:11 pm »

Código
  1. List miLista=null;

En la función consultaExplotaciones. En ningún mimento instancias "miLista", siempre es null.


En línea

mgc

Desconectado Desconectado

Mensajes: 30


Ver Perfil
Re: Exception al rellenar un JList
« Respuesta #2 en: 14 Noviembre 2015, 21:16 pm »

Hola,

Si te fijas en el método consultarExplotaciones, dentro del while, una vez que asigna los valores a cada uno de los atributos al objeto, luego añado el objeto a la propia lista:

Código:
miLista.add(miExplotacion);

Gracias por tu respuesta.

Saludos
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Exception al rellenar un JList
« Respuesta #3 en: 15 Noviembre 2015, 09:59 am »

No puedes utilizar métodos sobre un objeto null.
Pusiste miConexion = new Conexion(). Tuenes que hacer lo mismo con List.
En línea

mgc

Desconectado Desconectado

Mensajes: 30


Ver Perfil
Re: Exception al rellenar un JList
« Respuesta #4 en: 15 Noviembre 2015, 14:40 pm »

Hola,

En el caso de Conexión es una clase propia mia, si pongo :

Código:
List miLista=new List();

Debo sobreescribir todos los métodos de la clase List.

No sé muy bien cómo debería hacer esto que me dices, si me ayudas te lo agradezco.

Saludos
En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Exception al rellenar un JList
« Respuesta #5 en: 15 Noviembre 2015, 17:08 pm »

xq no usas genéricos? con java <> ? no es mejor para este caso? y de paso mas actual.

si tienes que sobre escribir métodos debes usar Herencia crear los constructores respectivos, mas el uso de super(), y this.
En línea

rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
mgc

Desconectado Desconectado

Mensajes: 30


Ver Perfil
Re: Exception al rellenar un JList
« Respuesta #6 en: 15 Noviembre 2015, 17:28 pm »

Eso he hecho, pero me sigue saltando la excepción NullPointerException.
Ahora tengo el código de la siguiente manera:

Código:
public class VentanaExplotaciones extends javax.swing.JDialog {
    private Coordinador miCoordinador;
    DefaultListModel modeloExplotaciones;
    ArrayList <ExplotacionesVo> miLista=new ArrayList <ExplotacionesVo>();
   

    /**
     * Creates new form VentanaExplotaciones
     */
    public VentanaExplotaciones(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        setIconImage(new ImageIcon(getClass().getResource("../imagenes/logotipoG24x24.png")).getImage());
       modeloExplotaciones=new DefaultListModel();
       
        miLista.add(miCoordinador.consultarExplotaciones());
        for(int i=0; i<miLista.size();i++){
        modeloExplotaciones.addElement(miLista.get(i).getCodigo());
        }
       
        jListaExpl.setModel(modeloExplotaciones);
       
     
    }

Me apunta a esta línea:

Código:
miLista.add(miCoordinador.consultarExplotaciones());

miCoordinador.consultarExplotaciones me devuelve objetos de tipo ExplotacionesVo

En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Exception al rellenar un JList
« Respuesta #7 en: 15 Noviembre 2015, 21:55 pm »

Ahora el que no inicializas es miCoordinador :/

Ten algo muy claro: Los objetos en Java hay que inicializarlos para usarlos, <todos>, salvo los tipos básicos. Pero todos los demás objetos los inicializas de la forma conveniente, ya sea con new, o con otras técnicas, como String str = "Abc";.
En línea

mgc

Desconectado Desconectado

Mensajes: 30


Ver Perfil
Re: Exception al rellenar un JList
« Respuesta #8 en: 15 Noviembre 2015, 23:39 pm »

Hola, puede parecer que no está inicializado, pero no es así, pues en el main de la aplicación le asigno a cada una de las ventanas a miCoordinador.

De esta forma está en todas las ventanas y funciona, yo en este caso veo algo relacionado con la lista, que además apunta la excepción.

Muchas gracias de todas formas por las molestias que te estás tomando.

Saludos
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Exception al rellenar un JList
« Respuesta #9 en: 16 Noviembre 2015, 00:31 am »

miCoordinador es un campo de la clase VentanaExplotaciones. El primer momento en que se inicializa es en el constructor. En ese constructor, no lo inicializas.

Saca por consola los valores de miLista y de miCoordinador, y comprueba qué son.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
agregar string array a JList
Java
brian_e 2 11,402 Último mensaje 22 Abril 2009, 17:46 pm
por brian_e
JList como hago para..
Java
Xedrox 3 4,314 Último mensaje 19 Julio 2011, 23:14 pm
por sapito169
Cargar datos mysql en Jlist
Java
Zedmix 1 7,140 Último mensaje 2 Junio 2012, 23:49 pm
por Proteus1989
Guardar los elementos de un jlist
Java
marc85 0 1,676 Último mensaje 20 Noviembre 2014, 18:34 pm
por marc85
Enlazar JComboBox con contenido de JList
Java
NeoChiri 2 2,246 Último mensaje 10 Mayo 2016, 11:53 am
por NeoChiri
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines