IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Problème JList, Vector Supprimer


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Juillet 2013
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 102
    Points : 34
    Points
    34
    Par défaut Problème JList, Vector Supprimer
    Bonjour,

    J'ai trouvé pas mal de choses sur le net mais tout n'a pas été résolu.
    Je crée un vecteur que je mets dans une JList.
    Je peu supprimer un element de ma JList de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public static void deleteElement() {
    		if ( lstSelectionnerUnFichier.isSelectionEmpty() == false)
    		{
    			int index = lstSelectionnerUnFichier.getSelectedIndex();
     
    			data.remove(index); //data est mon vecteur
    		}
    	}
    Le problème est le suivant :
    la suppression ne se fait pas à l'instantané.
    celle-ci se fait qu'après l'ajout d'un nouvel élément.

    Petit coup de pouce svp, MERCI d'avance...

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu n'est pas censé accéder à ton vecteur directement. Passe par les méthode de suppression du ListModel, celles-ci notifient correctement le composant qu'il faut recalculer.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Juillet 2013
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 102
    Points : 34
    Points
    34
    Par défaut
    Je crois avoir compris ceci, mais peut-être qu'il y a un problème logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public static void deleteElement() {
    		DefaultListModel listModel = new DefaultListModel();
    		int index;
     
    		if ( lstSelectionnerUnFichier.isSelectionEmpty() == false)
    		{
    			listModel.addElement(lstSelectionnerUnFichier);
    			index = lstSelectionnerUnFichier.getSelectedIndex();
     
    			listModel.remove(index);
    			//data.remove(index);
    		}
    	}

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il y a 2 problèmes dans ton dernier code :


    1. Code : Sélectionner tout - Visualiser dans une fenêtre à part
      DefaultListModel listModel = new DefaultListModel();
      Tu crées un nouveau modèle qui n'a rien à voir avec ta JList : ce que tu mets dedans ou que tu supprimes n'a aucun effet sur la JList. Il faut faire les manipulations sur le modèle de la JList.

    2. Code : Sélectionner tout - Visualiser dans une fenêtre à part
      listModel.addElement(lstSelectionnerUnFichier);
      Ici tu ajoutes comme élément de ce modèle ta JList, ce qui n'a pas de sens (sauf si tu voulais gérer par ailleurs une JList de JList).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Juillet 2013
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 102
    Points : 34
    Points
    34
    Par défaut
    Je n'utilise pas de model dans ma jlist, je l'ai uniquement créer de la façon suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    data = new Vector<String>();
    		lstSelectionnerUnFichier = new JList(data);
    		lstSelectionnerUnFichier.setFont(new Font("Calibri", Font.PLAIN, 12));
    		lstSelectionnerUnFichier.setBounds(40, 80, 150, 50);
    		JScrollPane ascenseur = new JScrollPane(lstSelectionnerUnFichier);
    		getContentPane().add(ascenseur);
    dois-je modifier quelque chose pour y parvenir ?
    Je te serai reconnaissant avec un exemple...

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2015
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Salut,

    Même si tu ne crée pas explicitement de ListModel, il existe. Tu peux le récupérer en faisant un getModel() sur ta liste, et c'est sur cet objet que tu récupères qu'il faut faire tes modifs.

    Personnellement je préfère le créer comme un attribut de la classe, ça évite d'avoir a faire des getModel() a tout bout de champs. (Je trouve que c'est un peu plus propre).

    Tu peux même faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    MyClass {
    JList list;
    ListModel model;
     
    public MyClass(){
     model = new ListModel();
     // Ici on ajoute les éléments dans la liste avec addElements
     .....
     
     // Et une fois que t'as remplis ton modèle tu crées ta liste
     list = new JList(model);
    }
    A+

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    En précision à ce que dit @Dia972, le modèle attribué par défaut à une JList est DefaultListModel.
    Avec le même code indiqué à @Dia972, tu remplaces la ligne avec model = new ListModel(); par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mode = (DefaultListModel)jlist.getModel();
    Ou faire comme @Dia972 t'indiques, mais en instanciant la classe DefaultListModel, pas l'interface, parce que ça ne fonctionnera pas sinon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    model = new DefaultListModel();
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Juillet 2013
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 102
    Points : 34
    Points
    34
    Par défaut
    Est-ce comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    data = new Vector<String>();
    		ListModel model;
    		model = (DefaultListModel)lstSelectionnerUnFichier.getModel();
    		 // Ici on ajoute les éléments dans la liste avec addElements
    		//model.addListDataListener(data);
    		model.addElement(data);
    		 // Et une fois que t'as remplis ton modèle tu crées ta liste
    		lstSelectionnerUnFichier = new JList(model);
    		lstSelectionnerUnFichier.setFont(new Font("Calibri", Font.PLAIN, 12));
    		lstSelectionnerUnFichier.setBounds(40, 80, 150, 50);
    		ascenseur = new JScrollBar();
    		getContentPane().add(lstSelectionnerUnFichier);
    Le problème est le addElement, eclipse propose uniquement le addListDataListener.
    Donc cela ne lui convien pas, peut-être que j'ai négliger quelque chose...

    Merci encore pour vos réponses

    PS : Il me propose le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    model.addListDataListener((ListDataListener) data);

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Il faut type ton modèle en DefaultListModel, pour pouvoir appeler addElement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DefaultListModel model = (DefaultListModel)lstSelectionnerUnFichier.getModel();
    Ensuite, il ne faut pas ajouter quelque chose dedans et créer une nouvelle JList : il suffit de faire ce que tu faisais ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public static void deleteElement() {
     
    		if ( !lstSelectionnerUnFichier.isSelectionEmpty() ) {
     
    		       int index = lstSelectionnerUnFichier.getSelectedIndex();
                           DefaultListModel listModel = (DefaultListModel)lstSelectionnerUnFichier.getModel();
    		       listModel.remove(index);
     
    		}
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2015
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Ha désolé j'avais zappé que c'était une interface ListModel. mais joel a pris soin de me corriger

    La méthode addElement est une méthode de la classe DefaultListModel.

    Et l'objet model est de type ListModel (interface) c'est pour ça que tu n'y a pas accès tel quel normalement tu peux l'appeler en faisant un cast.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    ((DefaultListModel)model).addElement();
    Ou alors tu changes le type de ton objet model.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    DefaultListModel model = list.getModel();  // Plus besoin de cast du coup
     
    model.addElement();

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Dia972 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    DefaultListModel model = list.getModel();  // Plus besoin de cast du coup
    Si, il faut toujours caster : JList.getModel() retourne deu ListModel<E>). Tout ce que tu peux paramétrer c'est le type de donnée stockée, mais pas le type de modèle.

    Donc au mieux, on pourrait faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DefaultListModel<File> model =  (DefaultListModel<File>)list.getModel();
    Dans le contexte on pourrait se contenter de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DefaultListModel<?> model =  (DefaultListModel<?>)list.getModel();
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2015
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Hum je crois que j'aurai du lire la doc avant de dire des bétises :p
    On en apprend même avec les sujets des autres

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Juillet 2013
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 102
    Points : 34
    Points
    34
    Par défaut
    Merci pour ces informations.

    Voici ma déclarations de ces trois variables (vecteur, list, model:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    static JList lstSelectionnerUnFichier;
    	static Vector<String> data = new Vector<String>();;
    static 	DefaultListModel model = (DefaultListModel) lstSelectionnerUnFichier.getModel();
    voici la cération de la JList :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    lstSelectionnerUnFichier = new JList(model);
    		lstSelectionnerUnFichier.setFont(new Font("Calibri", Font.PLAIN, 12));
    		lstSelectionnerUnFichier.setBounds(40, 80, 150, 50);
    		ascenseur = new JScrollBar();
    		getContentPane().add(lstSelectionnerUnFichier);
    La fonction est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public static void deleteElement() {
    		int index;	
     
    		if ( lstSelectionnerUnFichier.isSelectionEmpty() == false){
    			index = lstSelectionnerUnFichier.getSelectedIndex();
     
    			model = (DefaultListModel)lstSelectionnerUnFichier.getModel();
                model.remove(index);
    		}
    Est-ce bien cela ?

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Juillet 2013
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 102
    Points : 34
    Points
    34
    Par défaut
    il doit y avoir un problème dans la déclaration car il ne peu plus lancer la methode ruen, mais rien n'est souligné

  15. #15
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par nadong Voir le message
    il doit y avoir un problème dans la déclaration car il ne peu plus lancer la methode ruen, mais rien n'est souligné
    Rien n'est souligné, donc tout compile correctement. Ce qui ne veut pas dire que ça fonctionne à l'exécution : en l’occurrence, ce n'est pas le cas, et donc, tu dois avoir des messages d'erreurs (avec des stack traces), qu'il serait utile (sinon indispensable) de nous communiquer, si tu veux qu'on puisse t'aider, sans avoir à deviner ce qui ne va pas.

    Toutefois, ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    static JList lstSelectionnerUnFichier;
    	static Vector<String> data = new Vector<String>();;
    static 	DefaultListModel model = (DefaultListModel) lstSelectionnerUnFichier.getModel();
    Tu ne peux pas l'écrire. En effet, tu ne peux pas appeler getModel() sur la variable lstSelectionnerUnFichier (comme toute autre méthode d'ailleurs), puisqu'elle n'est pas initialisée (ce que tu fais par lstSelectionnerUnFichier = new JList(model); ailleurs).

    Pourquoi ne pas suivre ce qu'on t'a indiqué, au lieu de disperser ces bouts de code un peu partout dans ta classe. Voilà ce qu'elle devrait donner en gros (ici sous forme de JPanel pour l'exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public class MaJList extends JPanel { // c'est un exemple
     
    	private final JList<String> lstSelectionnerUnFichier;
    	private final DefaultListModel<String> model;
     
    	public MaJList(Iterable<String> fichiers) { // cette méthode marche pour toutes List (dont les Vector), et autre Collection
    		super(new BorderLayout());
    		model = new DefaultListModel<>(); // je créé le modèle
    		for(String fichier : fichiers) { // j'ajoute mes éléments au modèle
    			model.addElement(fichier);
    		}
    		lstSelectionnerUnFichier = new JList<>(model); // je créé la JList à partir du modèle
    		add( lstSelectionnerUnFichier );
    	}
     
    	public MaJList(Vector<String> fichiers) { // alternative (ici c'est juste pour montrer comment le faire dans l'autre sens, mais ce n'est pas utile, l'autre constructeur traite déjà les Vector)
    		super(new BorderLayout());
    		lstSelectionnerUnFichier = new JList<>(fichiers); // je créé directement la JList à partir du vector
    		model = (DefaultListModel<String>) lstSelectionnerUnFichier.getModel(); // je récupère le modèle que je sais être un DefaultListModel
    		add( lstSelectionnerUnFichier );
    	}
     
    	public void deleteSelectedElement() { 
     
    		if ( !lstSelectionnerUnFichier.isSelectionEmpty() ) {
    			int index = lstSelectionnerUnFichier.getSelectedIndex();
                            model.remove(index);
    		}
    	}
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Juillet 2013
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 102
    Points : 34
    Points
    34
    Par défaut
    Pour les deux déclarations de variable il me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Multiple markers at this line
    	- The type DefaultListModel is not generic; it cannot be parameterized with arguments 
    	 <String>
    	- The type DefaultListModel is not generic; it cannot be parameterized with arguments 
    	 <String>
    la correction qu'il propose est :
    remove argument est en je chois cette option il enlève les chevrons !

  17. #17
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Il n'est générique que depuis java 7

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Juillet 2013
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 102
    Points : 34
    Points
    34
    Par défaut
    J'ai essayé d'adapter le code à mon projet, ce n'est pas encore ça, au moment ou je fait ajouter il me dit cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JList$2 cannot be cast to javax.swing.DefaultListModel
    	at pSignature.fSignature.ajouterElement(fSignature.java:252)
    	at pSignature.pInclude.AjouterFichier.ajouterFichier(AjouterFichier.java:41)
    	at pSignature.fSignature$4.actionPerformed(fSignature.java:139)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    	at java.awt.Component.processMouseEvent(Component.java:6414)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
    	at java.awt.Component.processEvent(Component.java:6179)
    	at java.awt.Container.processEvent(Container.java:2084)
    	at java.awt.Component.dispatchEventImpl(Component.java:4776)
    	at java.awt.Container.dispatchEventImpl(Container.java:2142)
    	at java.awt.Component.dispatchEvent(Component.java:4604)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4279)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4209)
    	at java.awt.Container.dispatchEventImpl(Container.java:2128)
    	at java.awt.Window.dispatchEventImpl(Window.java:2492)
    	at java.awt.Component.dispatchEvent(Component.java:4604)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
    	at java.awt.EventQueue.access$400(EventQueue.java:82)
    	at java.awt.EventQueue$2.run(EventQueue.java:676)
    	at java.awt.EventQueue$2.run(EventQueue.java:674)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
    	at java.awt.EventQueue$3.run(EventQueue.java:690)
    	at java.awt.EventQueue$3.run(EventQueue.java:688)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Voici la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public static void ajouterElement(Vector<String> fichiers) { // alternative (ici c'est juste pour montrer comment le faire dans l'autre sens, mais ce n'est pas utile, l'autre constructeur traite déjà les Vector)
    		//super(new BorderLayout());
    		lstSelectionnerUnFichier = new JList(fichiers); // je créé directement la JList à partir du vector
    		model = (DefaultListModel) lstSelectionnerUnFichier.getModel(); // je récupère le modèle que je sais être un DefaultListModel
    		lstSelectionnerUnFichier.add( lstSelectionnerUnFichier );
    	}
     
    	public void deleteSelectedElement() { 
     
    		if ( !lstSelectionnerUnFichier.isSelectionEmpty() ) {
    			int index = lstSelectionnerUnFichier.getSelectedIndex();
    			model.remove(index);
    		}
    Voici la Classe complete qui ajoute un fichier (elle se trouve dans un autre package) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    package pSignature.pInclude;
     
    import java.io.File;
    import java.util.Vector;
     
    import javax.swing.JFileChooser;
     
    import pSignature.fSignature;
     
    public class AjouterFichier 
    {
    	public static void ajouterFichier()
    	{	
    		//creation du JFileChooser
    				JFileChooser monFichier = new JFileChooser(".");
    				//afficher les détails du fichier sélectionner
    				monFichier.setAccessory(new Parcourir(monFichier));
    				//changement du nom du bouton ouvrir
    				String nomBoutonOuvrir = "Ajouter le(s) fichier(s) é la liste...";
    				monFichier.setApproveButtonText(nomBoutonOuvrir);
    				//changement du titre
    				String titre = "Sélectioner un Fichier";
    				monFichier.setName(titre);
    				//ajout d'un filtre de fichier
    				//monFichier.addChoosableFileFilter(new FiltreFichier());
    				monFichier.setAcceptAllFileFilterUsed(false);
    				//ouverture de la boite de dialogue
    				new Parcourir(monFichier);
    				int retour = monFichier.showOpenDialog(null);
    				//récupérer le chemin complet du fichier
    				String cheminFichier;
    				//récuperer le nom du fichier
    				String nomFichier;
    				Vector<String> data = new Vector<String>();
    				//test si cliqué sur ouvrir
    				if (retour == JFileChooser.APPROVE_OPTION) {
    					File fileSelection = monFichier.getSelectedFile();
    					cheminFichier =  fileSelection.getAbsolutePath();
    					nomFichier = fileSelection.getName();
    					data.addElement(nomFichier);
    					fSignature.ajouterElement(data);
    			}
    	}
     
    }
    Si tu as besoin de plus d'informations dis le moi !

    Désoler malgré tous les codes si-dessous je n'ai pas encore réussi à faire fonctionner ces deux fonction, tout ça pour supprimer un element lol

    Merci pour la patience...

  19. #19
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par nadong Voir le message
    J'ai essayé d'adapter le code à mon projet, ce n'est pas encore ça, au moment ou je fait ajouter il me dit cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JList$2 cannot be cast to javax.swing.DefaultListModel
    	at pSignature.fSignature.ajouterElement(fSignature.java:252)
    	at pSignature.pInclude.AjouterFichier.ajouterFichier(AjouterFichier.java:41)
    	at pSignature.fSignature$4.actionPerformed(fSignature.java:139)
    ...
    J'ai fait une erreur : le constructeur avec Vector n'utilise pas de DefaultListModel. Utilise l'autre façon d'initialiser la JList.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Juillet 2013
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 102
    Points : 34
    Points
    34
    Par défaut
    J'ai utiliser l'autre initialisation mais toujours pas ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public static void ajouterElement(Vector<String> fichiers) { // alternative (ici c'est juste pour montrer comment le faire dans l'autre sens, mais ce n'est pas utile, l'autre constructeur traite déjà les Vector)
    		//super(new BorderLayout());
    		lstSelectionnerUnFichier = new JList(fichiers); // je créé directement la JList à partir du vector
    		DefaultListModel model = lstSelectionnerUnFichier.getModel();  // Plus besoin de cast du coup
    		model.addElement( lstSelectionnerUnFichier );
    	}
    voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JList$2 cannot be cast to javax.swing.DefaultListModel
    	at pSignature.fSignature.ajouterElement(fSignature.java:252)
    	at pSignature.pInclude.AjouterFichier.ajouterFichier(AjouterFichier.java:41)
    	at pSignature.fSignature$4.actionPerformed(fSignature.java:139)
    	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$1.run(Unknown Source)
    	at java.awt.EventQueue$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue$2.run(Unknown Source)
    	at java.awt.EventQueue$2.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$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)

Discussions similaires

  1. Problème ScrollPane JList Vector
    Par nadong dans le forum Composants
    Réponses: 1
    Dernier message: 22/06/2015, 02h33
  2. [Debutant][Vector]Petit problème de vector
    Par GyZmoO dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 25/05/2006, 10h39
  3. Problème avec vector par référence
    Par vdumont dans le forum SL & STL
    Réponses: 11
    Dernier message: 09/05/2006, 08h25
  4. Problème de vector
    Par jamesleouf dans le forum SL & STL
    Réponses: 13
    Dernier message: 22/03/2006, 22h36
  5. problème class vector
    Par Pe04 dans le forum SL & STL
    Réponses: 2
    Dernier message: 27/02/2006, 10h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo