[JAVA] JList Multiselection - Suppression
Résolu
SamC7
-
MicRo -
MicRo -
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 ^^ :
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);
}
}
}
A voir également:
- [JAVA] JList Multiselection - Suppression
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Forcer suppression fichier - Guide
- Waptrick java voiture - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
4 réponses
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é :
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();
}
}
}
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 ^^"
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);
}
}
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 :
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();
}
}