Téléchargement
illégal
Posez votre question Signaler

[JAVA] JList Multiselection - Suppression [Résolu]

SamC7 - Dernière réponse le 8 déc. 2011 à 14:30
Bonjour, je réalise un programme qui permet de remplir grâce à une BDD SQLServer, une JList à sélection multiple. Cette partie fonctionne très bien... ^^ Enfin sauf presque ^^"
Ensuite j'ai un bouton "Supprimer" qui comme son nom l'indique, doit supprimer... mais quoi ? Il doit supprimer les éléments sélectionnés dans la JList.
Mes problèmes :
- je n'arrive pas à supprimer tous les éléments sélectionnés... que se soit dans la liste ou dans ma BDD.
- la sélection multiple ne se fait qu'avec le bouton "Ctrl".
- j'aimerai que dès le lancement du programme, tous les éléments soient sélectionnés.
Pouvez-vous m'aider à résoudre ces problèmes ?
Merci d'avance...
Je vous fournis mon code. D'ailleurs s'il y a des critiques n'hésitez pas à les faire, pour que j'améliore mon code ^^ :
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;

public class Fenetre extends JFrame implements ActionListener
{
	public JPanel container = new JPanel();
	public static JList list = new JList();
	public static DefaultListModel dlm=new DefaultListModel();
	public static Connection cnx;
	public static int c, i;
	
	public static void main(String[] args)
	{
		Fenetre fen = new Fenetre();
		try
		{
			//Connection à la base de données
                        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			cnx=DriverManager.getConnection("jdbc:sqlserver://localhost;database=test;user=sa;password=Administrateur");
			Statement state = cnx.createStatement();
			ResultSet result = state.executeQuery("SELECT id FROM dbo.Pratica WHERE id NOT IN (SELECT id_pratica FROM Faldone WHERE id_scomparto IS NOT NULL)ORDER BY id");
			ResultSetMetaData resultMeta = result.getMetaData();
		
			//Création de la JList
			list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );  
			while(result.next())
			{ 
				dlm.addElement(result.getString("id"));
			}
			list.setModel(dlm);
			
			//Fermeture
			result.close();
			state.close();
		}
		catch (Exception e)
		{
			System.out.println("Une erreur est survenue !");
			e.printStackTrace();
		}
	}
	
	public Fenetre()
	{       
		//Création de la fenêtre	
		JPanel panel = new JPanel();
		panel.add(list);
		JButton bouton = new JButton("Supprimer");
		bouton.addActionListener(this);
		panel.add(bouton);
		
		this.setTitle("Suppression");
		this.setSize(400, 500);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
		container.setBackground(Color.white);
		container.setLayout(new BorderLayout());
		container.add(panel, BorderLayout.CENTER);
		
		this.setContentPane(container);
		this.setVisible(true);   			
	}
	
	public void actionPerformed(ActionEvent e)
	{
		//Evénement sur le boutton :
		//Supprime tous les éléments sélectionnés dans la JList
		c = dlm.size() ; //Compte le nombre d'élément dans la JList
		for (i=0;i<c;i++)
		{
			if (list.isSelectedIndex(i)) // si l'élément est sélectionné alors...
			{
				System.out.println("Valeur de la selection " + dlm.get(i));
				//Suppression du CAMPI_1 
				Statement state2;
				try
				{
					state2 = cnx.createStatement();
					state2.executeUpdate("DELETE FROM dbo.CAMPI_1 WHERE id_pratica = " + list.getSelectedValue());
					state2.close();
				} 
				catch(Exception e1)
				{
                    System.out.println("Une erreur est survenue !");
                    e1.printStackTrace();
                                }
				//Suppresion du faldone 
				Statement state3;
				try
				{
					state3 = cnx.createStatement();
					state3.executeUpdate("DELETE FROM dbo.Faldone WHERE id_pratica = " + list.getSelectedValue());
					state3.close();
				} 
				catch(Exception e1)
				{
                    System.out.println("Une erreur est survenue !");
                    e1.printStackTrace();
                                 }
				//Suppression du Pratica
				Statement state4;
				try
				{
					state4 = cnx.createStatement();
					state4.executeUpdate("DELETE FROM dbo.Pratica WHERE id = " + list.getSelectedValue());
					state4.close();
				} 
				catch(Exception e1)
				{
                    System.out.println("Une erreur est survenue !");
                    e1.printStackTrace();
                }			
			}
			else 
				{
				System.out.println(dlm.get(i) + " pas sélectionné.");
				}
			dlm.remove(i);
		}
	}
	
}
Lire la suite 

[JAVA] JList Multiselection - Suppression »

4 réponses
Réponse
+2
moins plus
Bon j'ai encore résolu un de mes problèmes ^^"
Mais il m'en reste encore un... et après j'ai fini ^^
- la sélection multiple ne se fait qu'avec le bouton "Ctrl".

J'aimerai qu'elle se fasse seulement avec le clic de la souris... c'est possible ou non ? On m'a dit que oui mais j'ai pas eu de solution... HELP PLEASE !

Voici mon code modifié :

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;

public class Fenetre extends JFrame implements ActionListener
{
	
	public JPanel container = new JPanel();
	public static JList list = new JList();
	public static DefaultListModel dlm=new DefaultListModel();
	public static Connection cnx;
	public static int c, i;
	
	public static void main(String[] args)
	{
		Fenetre fen = new Fenetre();
		try
		{
			//Connection à la base de données
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			cnx=DriverManager.getConnection("jdbc:sqlserver://localhost;database=test;user=sa;password=Administrateur");
			Statement state = cnx.createStatement();
			ResultSet result = state.executeQuery("SELECT id FROM dbo.Pratica WHERE id NOT IN (SELECT id_pratica FROM Faldone WHERE id_scomparto IS NOT NULL)ORDER BY id");
		
			//Création de la JList en multi-sélection
			list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );  
			while(result.next())
			{ 
				dlm.addElement(result.getString("id"));
			}
			list.setModel(dlm);
			//Sélection de tous les items dans la JList
			list.addSelectionInterval(0, dlm.size());	
			
			//Fermeture
			result.close();
			state.close();
		}
		catch (Exception e)
		{
			System.out.println("Une erreur est survenue !");
			e.printStackTrace();
		}
	}
	
	public Fenetre()
	{       
		//Création d'une fenêtre pour encadrer la JList
		JScrollPane listScroller = new JScrollPane(list);
		listScroller.setPreferredSize(new Dimension(190, 240));
		JPanel panel = new JPanel();
		panel.add(listScroller);
		JButton bouton = new JButton("Supprimer");
		bouton.addActionListener(this);
		panel.add(bouton);
		
		//Création de la consigne
		JLabel label = new JLabel("Désélectionnez les éléments que vous ne voulez pas supprimer.");
		label.setHorizontalAlignment(JLabel.CENTER);
		
		//Création de la fenêtre
		this.setTitle("Suppression");
		this.setSize(400, 300);
		this.setLocationRelativeTo(null);
		setResizable(false); 
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
		container.setLayout(new BorderLayout());
		container.add(panel, BorderLayout.CENTER);
		container.add(label, BorderLayout.NORTH);
		
		this.setContentPane(container);
		this.setVisible(true);   			
	}
	
	public void actionPerformed(ActionEvent e)
	{
		//Evénement sur le boutton :
		//Supprime tous les éléments sélectionnés dans la JList
		c = dlm.size() ; //Compte le nombre d'élément dans la JList
		for (i=0;i<c;i++)
		{
			if (list.isSelectedIndex(i)) // si l'élément est sélectionné alors...
			{
				//Suppression du CAMPI_1 
				Statement state2;
				try
				{
					state2 = cnx.createStatement();
					state2.executeUpdate("DELETE FROM dbo.CAMPI_1 WHERE id_pratica = " + dlm.get(i));
					//state2.close();
				} 
				catch(Exception e1)
				{
                    System.out.println("Une erreur est survenue !");
                    e1.printStackTrace();
                }
				//Suppresion du faldone 
				Statement state3;
				try
				{
					state3 = cnx.createStatement();
					state3.executeUpdate("DELETE FROM dbo.Faldone WHERE id_pratica = " + dlm.get(i));
					//state3.close();
				} 
				catch(Exception e1)
				{
                    System.out.println("Une erreur est survenue !");
                    e1.printStackTrace();
                }
				//Suppression du Pratica
				Statement state4;
				try
				{
					state4 = cnx.createStatement();
					state4.executeUpdate("DELETE FROM dbo.Pratica WHERE id = " + dlm.get(i));
					//state4.close();
				} 
				catch(Exception e1)
				{
                    System.out.println("Une erreur est survenue !");
                    e1.printStackTrace();
                }
			}
		}
		//Supprimer tous les éléments de la JList
		dlm.clear();
		
		//Raffraichir la JList
		try
		{
			Statement state4 = cnx.createStatement();
			ResultSet result = state4.executeQuery("SELECT id FROM dbo.Pratica WHERE id NOT IN (SELECT id_pratica FROM Faldone WHERE id_scomparto IS NOT NULL)ORDER BY id");
	
			//Création de la JList en multi-sélection
			list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );  
			while(result.next())
			{ 
				dlm.addElement(result.getString("id"));
			}
			list.setModel(dlm);
			//Sélection de tous les items dans la JList
			list.addSelectionInterval(0, dlm.size());
			
			//Fermeture
			result.close();
			state4.close();
		}
		catch(Exception e1)
		{
            System.out.println("Une erreur est survenue !");
            e1.printStackTrace();
        }
	}
}
Ajouter un commentaire
Réponse
+1
moins plus
Bon bin du coup j'ai finit mon programme toute seule... Je n'ai pas résolue mon problème comme je le voulais mais je suis passée par un autre chemin ^^ Merci à Maxime le roi du JAVA ^^

Voici le code pour ceux que cela intéressera pour plus tard... Il est pas parfait, mais ça marche ^^"

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;

public class Fenetre extends JFrame implements ActionListener
{
	
	public JPanel container = new JPanel();
	public JButton boutonSupp, boutonSelect;
	public JLabel label1, label2;
	static JList list = new JList();
	static DefaultListModel dlm=new DefaultListModel();
	static Connection cnx;
	static int i;
	
	public static void main(String[] args)
	{
		Fenetre fen = new Fenetre();
		try
		{
			//Connection à la base de données
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			cnx=DriverManager.getConnection("jdbc:sqlserver://localhost;database=test;user=sa;password=Administrateur");
			Statement state = cnx.createStatement();
			ResultSet result = state.executeQuery("SELECT id FROM dbo.Pratica WHERE id NOT IN (SELECT id_pratica FROM Faldone WHERE id_scomparto IS NOT NULL)ORDER BY id");
		
			//Création de la JList en multi-sélection
			while(result.next())
			{ 
				dlm.addElement(result.getString("id"));
			}
			list.setModel(dlm);
			//Sélection de tous les items dans la JList
			list.addSelectionInterval(0, dlm.size()-1);	
			
			//Fermeture
			result.close();
			state.close();
		}
		catch (Exception e)
		{
			System.out.println("Une erreur est survenue !");
			e.printStackTrace();
		}
	}
	
	public Fenetre()
	{       
		//Création d'une fenêtre pour encadrer la JList
		JScrollPane listScroller = new JScrollPane(list);
		listScroller.setPreferredSize(new Dimension(180, 240));
		JPanel panel = new JPanel();
		panel.add(listScroller);
		
		//Création des boutons
		boutonSupp = new JButton("Supprimer");
		boutonSupp.addActionListener(this);
		panel.add(boutonSupp);
		boutonSelect = new JButton("Tout sélectionner");
		boutonSelect.addActionListener(this);
		panel.add(boutonSelect);
		
		//Création des consignes
		label1 = new JLabel("Désélectionnez les éléments que vous ne voulez pas supprimer.");
		label1.setHorizontalAlignment(JLabel.CENTER);
		label2 = new JLabel("Pour désélectionner un élément faire CTRL + clic gauche.");
		label2.setHorizontalAlignment(JLabel.CENTER);
		
		//Création de la fenêtre
		this.setTitle("Suppression");
		this.setSize(400, 340);
		this.setLocationRelativeTo(null);
		setResizable(false); 
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
		container.setLayout(new BorderLayout());
		container.add(panel, BorderLayout.CENTER);
		container.add(label1, BorderLayout.NORTH);
		container.add(label2, BorderLayout.SOUTH);
		
		this.setContentPane(container);
		this.setVisible(true);   			
	}
	
	public void actionPerformed(ActionEvent e)
	{
		Object  source=e.getSource();
		//Si clique sur "Supprimer"
        if  (source==boutonSupp)
        {
        	//Supprime tous les éléments sélectionnés dans la JList
        	for (i=0;i<dlm.size();i++)
        	{
        		if (list.isSelectedIndex(i)) // si l'élément est sélectionné alors...
        		{
        			try
        			{
        				//Suppression du CAMPI_1 
        				Statement state2;
        				state2 = cnx.createStatement();
        				state2.executeUpdate("DELETE FROM dbo.CAMPI_1 WHERE id_pratica = " + dlm.get(i));
        				state2.close();
			
        				//Suppresion du faldone 
        				state2 = cnx.createStatement();
        				state2.executeUpdate("DELETE FROM dbo.Faldone WHERE id_pratica = " + dlm.get(i));
        				state2.close();

        				//Suppression du Pratica
        				state2 = cnx.createStatement();
        				state2.executeUpdate("DELETE FROM dbo.Pratica WHERE id = " + dlm.get(i));
        				state2.close();
        			} 
        			catch(Exception e1)
        			{
        				System.out.println("Une erreur est survenue !");
        				e1.printStackTrace();
        			}
        		}
        	}
        	//Supprimer tous les éléments de la JList
        	dlm.clear();
		
        	//Raffraichir la JList
        	try
        	{
        		Statement state3 = cnx.createStatement();
        		ResultSet result = state3.executeQuery("SELECT id FROM dbo.Pratica WHERE id NOT IN (SELECT id_pratica FROM Faldone WHERE id_scomparto IS NOT NULL)ORDER BY id");
        		
        		//Création de la JList en multi-sélection
        		while(result.next())
        		{ 
        			dlm.addElement(result.getString("id"));
        		}
        		list.setModel(dlm);
        		//Sélection de tous les items dans la JList
        		list.addSelectionInterval(0, dlm.size());
			
        		//Fermeture
        		result.close();
        		state3.close();
        	}
        	catch(Exception e1)
        	{
        		System.out.println("Une erreur est survenue !");
        		e1.printStackTrace();
        	}
        }
        //Si clique sur "Tout sélectionner"
        else if (source==boutonSelect)
        	list.setSelectionInterval(0,dlm.size()-1);
	}
}
Ajouter un commentaire
Réponse
+0
moins plus
Bon j'ai résolu mon problème majeur ^^"
MAIS pas les autres :

- la sélection multiple ne se fait qu'avec le bouton "Ctrl".
- j'aimerai que dès le lancement du programme, tous les éléments soient sélectionnés.


Je remet le code que je viens de changer ^^ , j'ai mis en gras et souligner le nouveau code :

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;

public class Fenetre extends JFrame implements ActionListener
{
	
	public JPanel container = new JPanel();
	public static JList list = new JList();
	public static DefaultListModel dlm=new DefaultListModel();
	public static Connection cnx;
	public static int c, i;
	static int[] a;
	
	public static void main(String[] args)
	{
		Fenetre fen = new Fenetre();
		try
		{
			//Connection à la base de données
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			cnx=DriverManager.getConnection("jdbc:sqlserver://localhost;database=test;user=sa;password=Administrateur");
			Statement state = cnx.createStatement();
			ResultSet result = state.executeQuery("SELECT id FROM dbo.Pratica WHERE id NOT IN (SELECT id_pratica FROM Faldone WHERE id_scomparto IS NOT NULL)ORDER BY id");
			ResultSetMetaData resultMeta = result.getMetaData();
		
			//Création de la JList
			list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );  
			while(result.next())
			{ 
				dlm.addElement(result.getString("id"));
			}
			list.setModel(dlm);
			//Sélection de tous les items dans la JList
			
			
			//Fermeture
			result.close();
			state.close();
		}
		catch (Exception e)
		{
			System.out.println("Une erreur est survenue !");
			e.printStackTrace();
		}
	}
	
	public Fenetre()
	{       
		//Création de la fenêtre	
		JPanel panel = new JPanel();
		panel.add(list);
		JButton bouton = new JButton("Supprimer");
		bouton.addActionListener(this);
		panel.add(bouton);
		
		this.setTitle("Suppression");
		this.setSize(400, 500);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
		container.setBackground(Color.white);
		container.setLayout(new BorderLayout());
		container.add(panel, BorderLayout.CENTER);
		
		this.setContentPane(container);
		this.setVisible(true);   			
	}
	
	public void actionPerformed(ActionEvent e)
	{
		//Evénement sur le boutton :
		//Supprime tous les éléments sélectionnés dans la JList
		c = dlm.size() ; //Compte le nombre d'élément dans la JList
		for (i=0;i<c;i++)
		{
			if (list.isSelectedIndex(i)) // si l'élément est sélectionné alors...
			{
				System.out.println("Valeur de la selection " + dlm.get(i));
				//Suppression du CAMPI_1 
				Statement state2;
				try
				{
					state2 = cnx.createStatement();
					state2.executeUpdate("DELETE FROM dbo.CAMPI_1 WHERE id_pratica = " + dlm.get(i));
					//state2.close();
				} 
				catch(Exception e1)
				{
                    System.out.println("Une erreur est survenue !");
                    e1.printStackTrace();
                }
				//Suppresion du faldone 
				Statement state3;
				try
				{
					state3 = cnx.createStatement();
					state3.executeUpdate("DELETE FROM dbo.Faldone WHERE id_pratica = " + dlm.get(i));
					//state3.close();
				} 
				catch(Exception e1)
				{
                    System.out.println("Une erreur est survenue !");
                    e1.printStackTrace();
                }
				//Suppression du Pratica
				Statement state4;
				try
				{
					state4 = cnx.createStatement();
					state4.executeUpdate("DELETE FROM dbo.Pratica WHERE id = " + dlm.get(i));
					//state4.close();
				} 
				catch(Exception e1)
				{
                    System.out.println("Une erreur est survenue !");
                    e1.printStackTrace();
                }			
			}
			else 
			{
				System.out.println(dlm.get(i) + " pas sélectionné.");
			}
		}
		//Raffraichir pour une nouvelle utilisation
		dlm.clear();
	}
	
}
Ajouter un commentaire
Réponse
+0
moins plus
Même avec du retard ça peut aider

Prob 1 :
http://docs.oracle.com/javase/tutorial/uiswing/events/listselectionlistener.html


Prob2:
int min = 0; 
int max = liste.getSize() - 1 ; 
liste.setSelectionInterval(min, max);


En ayant auparavent autorisé la sélection multiple
Ajouter un commentaire
Ce document intitulé « [JAVA] JList Multiselection - Suppression » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?