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 :

Evènement sur List et JList


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut Evènement sur List et JList
    Bonjour,

    J'ai un petit problème à résoudre:

    J'ai un objet que l'on va appeler "Collec" qui contient une liste de "Bidul".
    je souhaite afficher ma liste de "Bidul" dans une JList et pouvoir supprimer ou ajouter depuis ma liste (et pas depuis le model) des "Bidul". Cette action doit lancer un "Event" qui mettra a jour le model et par conséquence ma JList.

    Je ne sais pas trop quoi coder pour arriver à ceci. Le DefaultListModel ne suffit pas et je sais pas si je dois créer mon propre model ou ma propre List ou si simplement ajouter un listener suffirait (mais je sais ni où, ni comment le faire).


    Mer de votre aide.

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    Si ca fonctionne avec DefaultListModel

    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
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;
     
     
    public class TestList extends JFrame implements ListSelectionListener {
     
    	JPanel  panel;
    	JList maList;
    	DefaultListModel  model = new DefaultListModel();
     
    	Font f;
     
    	public TestList() {
     
    		super();
    		//this.setSize (new Dimension (800, 600));
    		this.setResizable (false);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		panel = new JPanel();
    		for(int i=0;i<10;i++)
    			model.addElement(new Integer(i));
    		maList = new JList(model);
    		maList.setPreferredSize(new Dimension(100,200));
    		maList.addListSelectionListener(this);
    		panel.add(maList);
    		add(panel);
    		pack();
    		setVisible(true);
    	}
     
    	public static void main(String[] args) {
    		TestList tl = new TestList();
    	}
     
    	public void valueChanged(ListSelectionEvent e) {
    		model.removeElement(maList.getSelectedValue());	
    	}
    }

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    Dans ton exemple tu utilises le model pour la suppression or moi je souhaite utiliser une List de la classe java.util.List.

    Avec ta méthode je devrais initialiser le model en ajoutant chaque élément de ma liste mais le problème est que si on supprime un élément du model il ne sera pas supprimé de ma liste.

    Je cherche un moyen de gérer le model en ne touchant qu'a la liste (la java.util.List).

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    bonjour,

    je ne vois pas trop l'intérêt d'utiliser une list à la place du model mais bon ceci ne me regarde pas

    Tu peux par exemple définir une méhode ajouter et une méthode enlever pour ta java.util.List dans laquelle tu mets en même temps à jour le model

    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
    47
    48
    49
    50
    51
    52
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;
    import java.util.List;
    import java.util.ArrayList;
     
    public class TestList extends JFrame implements ListSelectionListener {
     
    	JPanel  panel;
    	JList maJList;
    	DefaultListModel  model = new DefaultListModel();
    	List maList = new ArrayList();
     
    	Font f;
     
    	public TestList() {
     
    		super();
    		//this.setSize (new Dimension (800, 600));
    		this.setResizable (false);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		panel = new JPanel();
    		for(int i=0;i<10;i++)
    			ajouterElement(maList,model,new Integer(i).toString());
    		maJList = new JList(model);
    		maJList.setPreferredSize(new Dimension(100,200));
    		maJList.addListSelectionListener(this);
    		panel.add(maJList);
    		add(panel);
    		pack();
    		setVisible(true);
    	}
     
    	public static void main(String[] args) {
    		TestList tl = new TestList();
     
    	}
     
    	public void valueChanged(ListSelectionEvent e) {
    		enleverElement(maList,model,(String)maJList.getSelectedValue());	
    	}
    	public void ajouterElement(List list, DefaultListModel model, String element) {
    		list.add(element);
    		model.addElement(element);
    	}
    	public void enleverElement(List list,DefaultListModel model, String element) {
    		list.remove(element);
    		model.removeElement(element);
    	}
    }
    Encore plus propre tu crées une classe MaList qui étend java.util.List et qui aura une variable d'etat DefaultListModel.

    tu crées les méthodes citées au dessus et dans ton programme principale tu crées ton JList avec le model de MaList

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    En fait mon programme va beaucoup plus loin, je m'explique:
    J'ai une classe Exercise qui contient une java.lang.List<Evolution>.

    Je n'ai donc pas accès à ma vue depuis mon model (cf. MVC).

    Je voulais en fait faire comme dans la librairie GlazedList, en effet leur model prend en paramètre directement la liste donc une modification de celle-ci est automatiquement répercutée sur le model.

    Si quelqu'un sait comment on fait cela, je suis intéressé.


    Merci

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    Ta solution avec le DefaultListModel inclu dans ma List est pas mal mais ne fonctionne pas quand on utilise hibernate.

    J'ai donc créé une classe qui étends DefaultListModel et qui a en paramètre une List et en overridant quelques méthodes ça fonctionne.

    Par contre avec cette solution on modifie le model qui lui modifie automatiquement ma liste, c'est une solution acceptable mais j'aimerai bien savoir comment faire l'inverse.

    je pense qu'il faut que mon model implements ListDataListener mais je sais pas comment l'utiliser.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Evènements Sur Liste-Combo
    Par dsr57 dans le forum WinDev
    Réponses: 7
    Dernier message: 07/04/2014, 14h53
  2. [Flex4] Evénement sur spark list
    Par yvancoyaud dans le forum Flex
    Réponses: 3
    Dernier message: 28/02/2013, 14h21
  3. Evènements sur JList
    Par Kara759 dans le forum Composants
    Réponses: 1
    Dernier message: 03/12/2012, 11h28
  4. [AC-2007] Evènement sur zone de liste
    Par manusp dans le forum IHM
    Réponses: 19
    Dernier message: 13/04/2011, 21h51
  5. Evènement sur zone de liste
    Par Mout85 dans le forum IHM
    Réponses: 3
    Dernier message: 20/06/2005, 11h44

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