Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > fr.comp.lang.java > #1658
| From | Yliur <yliur@free.fr> |
|---|---|
| Newsgroups | fr.comp.lang.java |
| Subject | Re: JTree et représentation en mémoire. |
| Date | 2018-02-19 18:30 +0100 |
| Organization | Groupes francophones par TrigoFACILE |
| Message-ID | <20180219183001.6fbdcdb0@free.fr> (permalink) |
| References | <5a8a2852$0$9271$426a74cc@news.free.fr> <20180219082912.16277640@free.fr> <5a8b002e$0$9273$426a74cc@news.free.fr> |
Le 19 Feb 2018 16:49:50 GMT
jp <bloiiing.invalid@yahoo.com> a écrit :
> > Le mieux serait d'indiquer ce que tu veux stocker/représenter comme
> > information. Notamment est-ce qu'il s'agit d'une imbrication
> > potentiellement infinie ou non.
> >
> > Par exemple est-ce que tu veux représenter quelque chose comme ça :
> > Roman
> > Chapitre
> > Paragraphe
> >
> > Ou encore quelque chose comme ça :
> > Note
> > Sous-note
> > Sous-sous-note
> > ...
> >
>
> Oui, c'est bien ça. J'ai des objets Chapters qui contiennent des
> String. Une pour le corps du chapitres et deux autres pour les notes
> et synopsis. Je n'ai que ce type d'objets, quelque soit le niveau
> d'imbrication. Chaque chapitre ou sous chapitre à la même structure.
Dans ce cas les nœuds de ton arbre sont directement tes chapitres, et
la classe Chapter va contenir des sous-chapitres. Ça devrait ressembler
à ça (je ne reprends pas tout ce qui se trouve dans ta classe, juste
pour simplifier) :
public class Chapitre
{
private String titre ;
private String notes ;
private List<Chapitre> sousChapitres ;
}
Et voilà, c'est un arbre ! Ou en tout cas un nœud de l'arbre.
Il n'y a pas besoin d'une classe représentant l'arbre, par contre tu
auras sans doute une classe contenant la liste de chapitres de plus
haut niveau, l'objet de cette classe sera la racine de ton arbre (le
nœud de plus haut niveau).
> > Un arbre n'est qu'une racine avec des nœuds fils, qui eux-même
> > peuvent avoir des nœuds fils, ... Suivant ce que tu veux
> > représenter, il n'y a pas forcément de classe java pour ça. Les
> > deux exemples ci-dessus sont des arbres, simplement représentés par
> > des classes ayant des listes de nœuds fils (par exemple un chapitre
> > possède une liste de paragraphes).
>
> Oui mais ça a l'air plus compliqué que les List.
La seule chose plus compliquée c'est le parcours (tu as l'habitude de
fonctions récursives ?), mais ce n'est rien de très difficile avec
quelques exemples.
La question principale est "est-ce que les données sont vraiment
récursives (chapitres ayant des sous-chapitres, ayant des
sous-sous-chapitres, ...), la profondeur dépendant des choix de
l'utilisateur ?". Ou bien tu choisi juste qu'il y a deux niveaux
(chapitres et sous-chapitres) et que ce sera figé ?
> > Donc si tu nous dis ce que tu veux stocker dans ton arbre, ça
> > aidera à créer les classes de données (ça c'est facile) et à
> > définir une classe héritant de JTreeModel qui permet de parcourir
> > cet arbre. Est-ce que tu t'en es sorti avec les modèles pour les
> > listes ?
>
> Je pense m'en être sorti avec ma JList. Je me suis débrouillé en
> reprenant un exemple fourni par Oracle que j'ai modifié pour
> l'adapter à mon besoin. Il ne me manquait plus qu'à l'adapter à mes
> objets Chapter, car pour l'instant il ne traite que des objets
> String. En me promenant dans la doc, j'ai découvert un autre exemple
> avec un JTree. C'est bien plus ergonomique et esthétique avec un
> arbre. Du coup je suis en train de voir si je choisis cette solution
> et surtout si je pense pouvoir utiliser l'arbre dans les traitements
> sur les String de mes Chapter. Ça risque d'être peut-être un peu trop
> compliqué pour moi, alors qu'avec une List ça ne m'aurait pas posé de
> trop gros problèmes. Car c'est vrai que c'est plus compliqué de
> parcourir un arbre qu'une liste...
>
> Plus haut tu parles de la classe JTreeModel. J'ai cherché et je ne
> l'ai pas vue dans la doc. J'ai même regardé dans celle de JavaEE et
> elle n'y est pas non plus...
Pardon, il s'agit de la classe TreeModel, mentionnée dans la doc de
JTree.
Cette classe ne possède pas beaucoup de méthodes, ça n'a pas l'air très
difficile à implémenter (à première vue...).
Par exemple getChild prend en paramètre un nœud parent et l'indice de
son enfant, ça doit pouvoir s'écrire comme ça (en supposant que la
classe qui regroupe les chapitres s'appelle DonneesAppli) :
public Object getChild (Object parent, int index)
{
if (parent instanceof DonneesAppli)
return ((DonneesAppli)parent).getChapitres().get (index) ;
else if (parent instanceof Chapitre)
return ((Chapitre)parent).getSousChapitres().get (index) ;
else
throw new RuntimeException ("Type inconnu : " + parent.getClass()) ;
}
Cette classe que tu crées et qui hérite de TreeModel posséderait
un attribut de type DonneesAppli, pour pouvoir implémenter
la méthode getRoot(), qui permettra au JTree de parcourir ton arbre.
Ma méthode plus haut est un peu simplifiée : si tu as comme enfants
d'un nœud-chapitre des sous-chapitres mais aussi des chaînes, il faut
en tenir compte dans tes calculs d'indices et dans d'autres méthodes.
Si ce n'est pas clair, essaie de l'implémenter avec seulement les
chapitres et sous-chapitres et reviens pour intégrer les chaînes à
tout ça.
> Voici ma classe Chapter:
>
> [...]
Si tu ne sais pas encore comment tu vas faire la sauvegarde, tu peux
zapper la sérialisation : tu verras plus tard comment tu décides de
sauvegarder tes données.
Et le fait d'utiliser une date pour identifier les chapitres me paraît
dangereux si tu penses conserver ça à terme. Tu n'es pas à l'abri d'un
conflit (clics de création résolus très rapidement ou création
automatique par du code).
Back to fr.comp.lang.java | Previous | Next — Previous in thread | Next in thread | Find similar
JTree et représentation en mémoire. jp <bloiiing.invalid@yahoo.com> - 2018-02-19 01:28 +0000
Re: JTree et représentation en mémoire. Yliur <yliur@free.fr> - 2018-02-19 08:29 +0100
Re: JTree et représentation en mémoire. jp <bloiiing.invalid@yahoo.com> - 2018-02-19 16:49 +0000
Re: JTree et représentation en mémoire. Yliur <yliur@free.fr> - 2018-02-19 18:30 +0100
Re: JTree et représentation en mémoire. jp <bloiiing.invalid@yahoo.com> - 2018-02-21 00:50 +0000
Re: JTree et représentation en mémoire. Yliur <yliur@free.fr> - 2018-02-21 15:16 +0100
Re: JTree et représentation en mémoire. jp <bloiiing.invalid@yahoo.com> - 2018-02-22 04:10 +0000
Re: JTree et représentation en mémoire. Yliur <yliur@free.fr> - 2018-02-22 10:05 +0100
Re: JTree et représentation en mémoire. jp <bloiiing.invalid@yahoo.com> - 2018-02-24 08:01 +0000
Re: JTree et représentation en mémoire. David Larochette <dlarochette0@gmail.com> - 2018-02-24 12:59 +0000
Re: JTree et représentation en mémoire. jp <bloiiing.invalid@yahoo.com> - 2018-02-24 15:00 +0000
Re: JTree et représentation en mémoire. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2018-02-24 16:19 +0100
Re: JTree et représentation en mémoire. jp <bloiiing.invalid@yahoo.com> - 2018-02-25 11:16 +0000
Re: JTree et représentation en mémoire. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2018-02-25 12:54 +0100
Re: JTree et représentation en mémoire. jp <bloiiing.invalid@yahoo.com> - 2018-02-25 14:36 +0000
Re: JTree et représentation en mémoire. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2018-02-26 00:55 +0100
Re: JTree et représentation en mémoire. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2018-02-26 08:14 +0100
Re: JTree et représentation en mémoire. jp <bloiiing.invalid@yahoo.com> - 2018-02-26 10:41 +0000
Re: JTree et représentation en mémoire. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2018-02-21 23:23 +0100
Re: JTree et représentation en mémoire. jp <bloiiing.invalid@yahoo.com> - 2018-02-22 04:16 +0000
Re: JTree et représentation en mémoire. Yliur <yliur@free.fr> - 2018-02-22 09:59 +0100
Re: JTree et représentation en mémoire. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2018-02-22 10:12 +0100
Re: JTree et représentation en mémoire. jp <bloiiing.invalid@yahoo.com> - 2018-02-24 07:57 +0000
Re: JTree et représentation en mémoire. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2018-02-19 19:38 +0100
Re: JTree et représentation en mémoire. jp <bloiiing.invalid@yahoo.com> - 2018-02-21 00:52 +0000
csiph-web