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 :

Jlist dynamique - DefaultListModel et affichage dans le panel


Sujet :

Composants Java

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Jlist dynamique - DefaultListModel et affichage dans le panel
    Bonjour,

    Je travaille actuellement sur un projet IHM.
    J'ai crée une classe Entreprise (attributs: nom, adresse etc.)
    J'ai crée ensuite une classe Carnet qui contient un ArrayList d'Entreprises triées par ordre alphabétique.
    J'ai crée une Jlist dans un Jpanel dans laquelle je souhaite ajouter les noms (uniquement) de ces entreprises: je souhaite en fait afficher un répertoire de contact dynamique dans ce panel.
    J'ai vu que pour une liste dynamique il faut créer un modèle de liste DefaultListModel mais après avoir vu plein d'exemples je ne comprends pas exactement à quoi sert ce modèle ni comment il fonctionne réellement.

    Pourriez-vous m'aider svp?

    Merci d'avance

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Points : 149
    Points
    149
    Par défaut
    Bonjour,

    Voici une petite classe self compilable

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    public class Test {
     
    	public static class Entreprise {
    		private String nom;
    		private String adresse;
     
    		public Entreprise(String nom, String adresse) {
    			this.nom = nom;
    			this.adresse = adresse;
    		}
     
    		public String getNom() {
    			return this.nom;
    		}
    	}
     
     
    	public static void main(String[] args) {
    		MainFrame m = new Test.MainFrame();
    		m.setVisible(true);
    	}
     
    	public static class MainFrame extends JFrame {
     
     
    		public MainFrame() {
    			super();
    			setMinimumSize(new Dimension(800,600));
    			setPreferredSize(new Dimension(800,600));
    			setResizable(false);
    			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    			JList list = new JList();
    			CarnetEntrepriseModel model = new CarnetEntrepriseModel();
    			model.addEntreprise(new Entreprise("Microsoft", "3 rue de la fenêtre"));
    			model.addEntreprise(new Entreprise("Apple", "5s rue de la poire"));
    			list.setModel(model);
    			getContentPane().add(list);
    		}
     
    	}
     
    	public static class CarnetEntrepriseModel extends AbstractListModel {
     
    		private List<Entreprise> entrepriseList;
     
    		public CarnetEntrepriseModel() {
    			this.entrepriseList = new ArrayList<Entreprise>();
    		}
     
    		public void addEntreprise(Entreprise entreprise) {
    			entrepriseList.add(entreprise);
    		}
     
    		@Override
    		public int getSize() {
    			return entrepriseList.size();
    		}
    		@Override
    		public Object getElementAt(int index) {
    			String result = null;
    			if (index < getSize()) {
    				Entreprise entreprise = entrepriseList.get(index);
    				result = entreprise == null ? "" : entreprise.getNom();
    			}
    			return result;
    		}
    	}
     
    }
    Le modèle est la partie qui correspond aux données que contient ta JList. La JList n'est en fait que la "vue" du modèle. (Les composants SWING sont basés sur un design pattern MVC => Model View Controller)
    Dans cet exemple, on a une classe CarnetEntrepriseModel qui hérite de AbstractListModel.
    La classe DefaultListModel hérite elle aussi de cette classe. C'est simplement une implémentation par défaut de cette classe abstraite.
    Ce qu'il faut savoir c'est que dans le modèle, la méthode getSize() est la méthode qui doit donner lorsqu'elle est appelée la taille de ta liste.
    La méthode getElementAt(int index) est la méthode qui doit retourner ce qui va être affiché à un index donné de la liste.
    Bien entendu, il faut stocker les éléments que tu souhaite afficher dans la liste, c'est pour cela qu'il y a une liste dans le modèle !
    Et donc, logiquement, si tu souhaitais afficher autre chose que le nom de l'entreprise dans ta liste, il te suffit de changer ce que retourne la méthode getElementAt(int index).

Discussions similaires

  1. Problème d'Affichage dans un Panel
    Par A&Nexus dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 15/04/2008, 10h24
  2. Probleme d'affichage de Message dans un Panel
    Par vorhax dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/04/2007, 21h13
  3. Ajout de CheckBox dans un panel de manière dynamique
    Par Orian dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 02/04/2007, 10h43
  4. [VB.NET] affichage dans un tableau créé dynamiquement
    Par elastoplas dans le forum ASP.NET
    Réponses: 3
    Dernier message: 10/11/2006, 08h25
  5. [DX VB NET]Affichage dans un panel et fermeture
    Par lelulu dans le forum DirectX
    Réponses: 7
    Dernier message: 21/08/2006, 21h37

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