Path: csiph.com!news.redatomik.org!news.gegeweb.eu!gegeweb.org!news.trigofacile.com!.POSTED.reverse-90.fdn.fr!not-for-mail From: Yliur Newsgroups: fr.comp.lang.java Subject: Re: Question sur les DefaultListModel Date: Tue, 6 Feb 2018 06:10:45 +0100 Organization: Groupes francophones par TrigoFACILE Message-ID: <20180206061045.129cf5ec@free.fr> References: <5a791646$0$3715$426a74cc@news.free.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Injection-Info: news.trigofacile.com; posting-account="yliur@free.fr"; posting-host="reverse-90.fdn.fr:80.67.176.90"; logging-data="23287"; mail-complaints-to="abuse@trigofacile.com" X-Newsreader: Claws Mail 3.16.0 (GTK+ 2.24.32; x86_64-pc-linux-gnu) Xref: csiph.com fr.comp.lang.java:1650 Le 06 Feb 2018 02:43:18 GMT jp a écrit : > Bonjour, > > Je me pose la question de savoir à quoi sert de créer une List = > new ArrayList() pour stocker des objets si on utilise un > DefaultListModel pour représenter une JList? Je pose la > question car, à première vue, le DefaultListModel est une liste en > soi. Ou semble- t-il un Vector... Le DefaultListModel dispose à > peu près des mêmes méthodes que la List. Donc, quel est l'intérêt > d'avoir en plus une List? > > Merci d'avance. DefaultListModel sert à stocker des données pour l'interface. ArrayList sert à stocker des données en général. En général tes données sont stockées dans des structures comme ArrayList. Puis : - Soit tu veux les copier dans l'interface et qu'elles y soient modifiées sans que la liste d'origine soit immédiatement impactée (jusqu'à une sauvegarde) et dans ce cas tu fais une copie des données dans un modèle destiné à l'interface (DefaultListModel par exemple), puis dans l'autre sens quand tu veux les sauvegarder (pas sur un disque : juste quand tu veux qu'elles soient validées en mémoire). - Soit tu veux que les données de la liste soient modifiées directement via l'interface, auquel cas tu construis un objet de modèle d'une classe à toi qui en fait va modifier ta liste (ArrayList) dès que les modifications sont appliquées dans l'interface. Il existe un troisième cas : - Soit tu ne veux pas faire de distinction entre les données de ton programme et celles affichées dans l'interface, auquel cas tu les stockes directement dans un modèle, par exemple DefaultListModel. Ce n'est a priori intéressant que lorsque les données ne sont pas des données générales manipulées par le programme mais des données qui ne servent qu'à l'interface par exemple. Ou encore si ton programme est vraiment très simple. S'il s'agit des données de ton programme, je te conseille de les stocker dans une liste distincte de l'interface (ArrayList) et de choisir une des deux premières options.