Path: csiph.com!weretis.net!feeder4.news.weretis.net!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 17:22:38 +0100 Organization: Groupes francophones par TrigoFACILE Message-ID: <20180206172238.132467e5@free.fr> References: <5a791646$0$3715$426a74cc@news.free.fr> <20180206061045.129cf5ec@free.fr> <5a7949b7$0$9266$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="25978"; 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:1652 Le 06 Feb 2018 06:22:47 GMT jp a écrit : > Le Tue, 06 Feb 2018 06:10:45 +0100, Yliur a écrit : > > > > - 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. > > Merci de ta réponse. J'ai bien compris les différentes possibilités, > mais est-ce que tu pourrais préciser un peu plus le point ci-dessus? > Par objet de modèle d'une classe entends-tu qu'il faut que > j'implémente ma propre version de DefaultListModel à partir de > l'interface ListModel? Je voulais dire "tu construis un objet de modèle sous la forme d'une classe à toi". Donc tu définis une classe qui implémente ListModel et tu passeras à la JList un objet de cette classe. Dans cette classe tu aurais un attribut qui référencerait la liste réelle, à passer en paramètre au constructeur, et des méthodes qui redirigent vers cette liste. Pour ça tu peux hériter de AbstractListModel, qui réalise déjà certaines des opérations annexes (gestion des écouteurs d'événements, ...), et implémenter le reste Tu implémentes ça comme le fait DefaultListModel, sauf que c'est une référence à une liste externe. Donc tu dois implémenter la même liste de méthodes que tu trouveras dans la doc de DefaultListModel. C'est vaguement long mais ça devrait être assez simple, de ce type : public void clear () { this.listeDonnees.clear() ; } Si tu utilises Eclipse ou autre environnement de développement intégré, il se peut qu'il y ait une option pour générer une bonne partie de ce code. Par exemple dans Eclipse voir de ce côté : clic droit sur le code source de la classe créée -> Source... -> Generate delegate methods... -> sélecionner celles qui t'intéressent.