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

 Java Discussion :

Principe de création des DefaultListModel


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut Principe de création des DefaultListModel
    bonjour,
    jusqu' a présent je construisais depuis ma fenetre autant que besoin de DefaultListModel en instanciant la classe ListModel extends DefaultListModel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            this.lesModeles = new ListModel[..]
            for (...
    {
                this.lesModeles[i] = new ListModel(...
            }
        }
    je passais des uns aux autres avec un combobox.
    La bonne pratique ne voudrait -elle pas que je ne crée qu'un seul model, et au lieu d'utiliser le constructeur, utiliser des set et get dans le ListModel pour que le model s'initialise avec les données fonctionnelles voulues sur le moment ?

    Merci de vos suggestions

  2. #2
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    Après selection dans une combobox je souhaite afficher les données dans une JList.
    La premère sélection dans le combobox m'affiche les bonnes données dans la Jlist, à la deuxième sélection j'ai tjs les données de la première sélection...
    Lors de la visualisation des local varibles en mode debug le modèle récupére bien les données voulues.
    Peut-être n'est-ce qu'un probleme de raffraîchissement de la JList ...

    Code de la fenetre
    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
     
    public class ParkingUI extends JInternalFrame {
     
        //ComboBox contenant les parkings 
        private JComboBox cbxPkg;
        //ListParkingModel la DefaultListModel
        private ListParkingModel leModelePkgSel;
        private JList lstVoitures;
     
        public ParkingUI(String titre) {
     
            this.setTitle(titre);
            this.setMaximizable(true);
            this.setClosable(true);
            this.setSize(400, 150);
            this.setResizable(true);
            this.setLayout(new FlowLayout()); // provisoire
            this.setVisible(true);
     
            // affichage du combobox contenant les parkings
            cbxPkg = new JComboBox(new CbxParkingModel());
            cbxPkg.addActionListener(new voirAction(this, ""));
            this.getContentPane().add(cbxPkg);
     
           // Creation du modele de liste
     
            this.leModelePkgSel = new ListParkingModel();
            }
     
        /**
         * @return le modele combobox parking
         * @see getSelectedParking ()
         */
        public CbxParkingModel getModelCbx() {
            return (CbxParkingModel) cbxPkg.getModel();
        }
     
         /**
         * initialiser le parking selectionné a travers la combobox
         */
        public void setModelListPkg(Parking lePkgAModeliser) {
            this.leModelePkgSel.removeAllElements();
            this.leModelePkgSel.clear();
            this.leModelePkgSel.setParkingModel(lePkgAModeliser);
        }
     
        /**
         * @return le modele de  parking selectionné
         */
        public ListParkingModel getModelListPkg() {
            return (ListParkingModel) this.leModelePkgSel;
        }
        /**
         * 
         * @return  la  Jlist avec  pour afficher les données sélectionnées
         */
        public JList getJList() {
            return this.lstVoitures;
        }
    }
    Code de 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
     
    public class ListParkingModel extends DefaultListModel{
        private Parking lePkgModelise;
            /** Creates a new instance of ModeleListeParking */
        public ListParkingModel() {
            super(); // construction du modele general
     
        }
     
     
        public void setParkingModel(Parking pkgAModeliser) {
            this.lePkgModelise = pkgAModeliser; // initialisation specifique
        }
     
        @Override
        public int getSize() {
            return this.lePkgModelise.getTaille();
        }
     
        @Override
        public Object getElementAt(int i) {
            return this.lePkgModelise.getVehicule(i);
        }
     
    }
    code de l'Action
    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 voirAction extends AbstractAction {
     
        //Fenetre ou réside le bouton - le combobox - la JList
        private ParkingUI pkgui;
        //Parking fonctionnel 
        private Parking pkg;
     
        public voirAction(ParkingUI pkgui, String texte) {
            super(texte);
            this.pkgui = pkgui;
        }
     
        public void actionPerformed(ActionEvent e) {
            //récupération du parking a visualiser depuis la selection de la cbx     
            this.pkg = (Parking) pkgui.getModelCbx().getSelectedParking();
     
            //transmission du parking au modèle
            pkgui.setModelListPkg(pkg);
     
            //Affichage dans la liste du modele de parking selectionné dans la cbx
            try {
     
                pkgui.getJList().setModel((ListParkingModel)pkgui.getModelListPkg());
            } catch (Exception err) {
                System.out.print("Voici l'erreur : ");
                System.out.print(err.getCause());
            }
     
        }
    }
    Merci de votre aide

  3. #3
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    il faut ajouter fireContentsChanged(this.lePkgModelise, 0, getSize()); pour notifier au modéle que les données ont étes changées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     public void setParkingModel(Parking pkgAModeliser) {
            this.lePkgModelise = pkgAModeliser; // initialisation specifique
            fireContentsChanged(this.lePkgModelise, 0, getSize());
        }

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

Discussions similaires

  1. POO -> principe de création des objets
    Par DeeVoiD dans le forum Langage
    Réponses: 5
    Dernier message: 20/11/2009, 09h24
  2. Réponses: 7
    Dernier message: 22/02/2005, 13h07
  3. Réponses: 3
    Dernier message: 24/10/2003, 21h46
  4. Réponses: 8
    Dernier message: 03/09/2003, 00h47

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