JAVA | Réafficher une JList

Résolu/Fermé
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 - 24 avril 2012 à 23:50
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 - 25 avril 2012 à 01:10
Bonjour,

Je cherche désespérément à supprimer un élément de ma JList, qui comprend un DefaultListModel.
Les données de ma liste proviennent d'une BDD, j'arrive bien a effectuer les requêtes de suppressions mais j'ai toujours un problème sur le ré affichage de l'objet.
J'ai tenter de clear la DLM, puis de réinserer, comme j'fais habituellement pour du réaffichage après insertion ( la dessus pas de soucis )

Bref trêve de blabla je vous montre en speed ce que j'ai, tout d'abord mes déclarations de JList et DLM :

    private DefaultListModel dlm = new DefaultListModel();		
    private JList mesVinsGest = new JList(dlm);
    private JScrollPane monScrollGest = new JScrollPane();
    

    private JList mesVinsSupp = new JList(dlm);
    private JScrollPane monScrollSupp = new JScrollPane();


Voici ensuite la méthode de ré affichage ( qui fonctionne ) :


	private void chargerLaListe(JList laListe, DefaultListModel dlm) {
		dlm.clear();
		laListe.removeAll();
		try {
			Connection conn = DriverManager.getConnection(url, user, passwd);
			Statement etat = conn.createStatement();


			ResultSet resultat = etat.executeQuery("SELECT codebout, nomb FROM bouteille ORDER BY codebout");


			while(resultat.next()){
				if(! resultat.getString("codebout").equals("0"))
				dlm.addElement(resultat.getString("codebout") + " " + resultat.getString("nomb"));
			}

			
            resultat.close();

            etat.close();

			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}


et voici le bout de code permettant la suppression :

btnSupp.addActionListener(new ActionListener()
	    {
	        @Override
	        public void actionPerformed(ActionEvent e){
	        	try{
	        		String str = mesVinsSupp.getSelectedValue().toString();
	        		String[] stStrCode = str.split(" ");
		    		

	        		if(!str.equals("")){
	        			Connection conn = DriverManager.getConnection(url, user, passwd);

		    			PreparedStatement ps;	 
		    			PreparedStatement psB;
		    			
		    			ResultSet rsPres;
		    			PreparedStatement psPres;	    			
		    			String sqlstrPresB = null;	 
		    			String sqlstrPres = "SELECT COUNT(*) FROM vinavecappellation WHERE codebout = ?";	    		    			
		    			psPres = conn.prepareStatement(sqlstrPres);	   

		    			psPres.setInt(1, Integer.valueOf(stStrCode[0]));	    

		    			rsPres = psPres.executeQuery();
		    			rsPres.next();

		    			if(rsPres.getInt(1)==1){

			    			sqlstrPres = "DELETE FROM vinavecappellation WHERE codebout = ?";	    		    			
			    			ps = conn.prepareStatement(sqlstrPres);	    			
			    			ps.setInt(1, Integer.valueOf(stStrCode[0]));	    			
			    			ps.executeUpdate();


		    			}
		    			else{

			    			sqlstrPres = "DELETE FROM vinsimple WHERE codebout = ?";	    		    			
			    			ps = conn.prepareStatement(sqlstrPres);
			    			ps.setInt(1, Integer.valueOf(stStrCode[0]));	    			
			    			ps.executeUpdate();
			 



		    			}

		    			sqlstrPresB = "DELETE FROM bouteille WHERE codebout = ?";	
		    			psB = conn.prepareStatement(sqlstrPresB);	   
		    			psB.setInt(1, Integer.valueOf(stStrCode[0]));	
		    			psB.executeUpdate();


		    			rsPres.close();

		    			conn.close();

	        			JOptionPane.showMessageDialog(null, "Cette bouteille à bien été supprimée", "Alerte", JOptionPane.ERROR_MESSAGE); 

	        			
	        		}
	        	}//try
	        	catch(Exception evt){
        			JOptionPane.showMessageDialog(null, "Selectionnez une bouteille", "Alerte", JOptionPane.ERROR_MESSAGE); 

	        	}//catch
        		dlm.removeElementAt(mesVinsSupp.getSelectedIndex());

	        	
        		chargerLaListe(mesVinsSupp,dlm);
        		chargerLaListe(mesVinsGest,dlm);
	            } 

	     });




et bien sur l'erreur :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at fr.xineroks.mesclasses.Fenetre$2.valueChanged(Fenetre.java:409)
	at javax.swing.JList.fireSelectionValueChanged(Unknown Source)
	at javax.swing.JList$ListSelectionHandler.valueChanged(Unknown Source)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
	at javax.swing.DefaultListSelectionModel.removeIndexInterval(Unknown Source)
	at javax.swing.plaf.basic.BasicListUI$Handler.intervalRemoved(Unknown Source)
	at javax.swing.AbstractListModel.fireIntervalRemoved(Unknown Source)
	at javax.swing.DefaultListModel.removeElementAt(Unknown Source)
	at fr.xineroks.mesclasses.Fenetre$3.actionPerformed(Fenetre.java:550)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)




Merci de votre aide, car je bloque sur un truc tout bête pour terminer mon application


Cordialement,

Xineroks
A voir également:

3 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
25 avril 2012 à 00:03
Le message d'erreur indique un NullPointerException sur Fenetre$2.valueChanged or tu n'as pas mis le code de cette méthode (qui doit probablement être un ListSelectionListener)
0
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 3
Modifié par Xineroks le 25/04/2012 à 00:19
Oui, exactement.
Mais ayant supprimer sans faire exprès mon projet... je dois re-coder ce que j'ai perdu...
et tenter un data recovery sur clé USB pour récupérer des .java ou .class ça craint ...

:blasé:

Allez c'est parti ! 4H de taf pour rien...
0
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 3
25 avril 2012 à 01:06
Voilà, j'ai réparé mes bêtises et effectivement il y bien une erreur dû au ListSelectionListener, car lorsque je supprime puis, met à jour mes données la liste qui possède le listener est affecté, donc écoute quelque chose qu'il ne devrait pas. C'est ce qui me génère l'erreur.
Je dois sans doute changer de listener, je vais me renseigner sur quelque chose de plus adapté.

le mieux serait du style, "sur clic d'un élément"
0
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 3
25 avril 2012 à 01:10
J'ai répondu à ma reflexion, addMouseListener
0