Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.java > #1597
| From | Yliur <yliur@free.fr> |
|---|---|
| Newsgroups | fr.comp.lang.java |
| Subject | Re: Aide pour une stratégie de programmation. |
| Date | 2017-11-11 18:33 +0100 |
| Organization | Groupes francophones par TrigoFACILE |
| Message-ID | <20171111183357.7277d116@free.fr> (permalink) |
| References | <59fc966a$0$20429$426a34cc@news.free.fr> <20171107150354.5dc0969f@free.fr> <5a03af3a$0$7158$426a74cc@news.free.fr> <20171109091546.54256f71@free.fr> <5a06ff9f$0$3443$426a34cc@news.free.fr> |
Le 11 Nov 2017 13:48:15 GMT
bloiiing <bloiiing.invalid@yahoo.com> a écrit :
> Yliur wrote:
>
> > Le 09 Nov 2017 01:28:26 GMT
> > bloiiing <bloiiing.invalid@yahoo.com> a écrit :
> >
> >> Yliur wrote:
>
> >> C'est une très bonne idée. Je pense que je vais créer une classe
> >> Chapitre, mais ses attributs risquent de varier dans le temps...
> >> Ensuite je pourrais mettre ces objets dans un Vector par exemple.
> >> Ensuite il y aura tout le travail pour utiliser ces données. Si je
> >> fais ça, lorsque je modifierai le texte d'un JTextPane est-ce que
> >> ce texte sera modifié également dans l'objet Chapitre contenu dans
> >> le vecteur? Je pense que oui mais j'ai simplement un doute.
> >
> > Non : la représentation des données en mémoire est indépendante de
> > leur représentation graphique.
> >
> > Tu peux faire le lien manuellement comme ça : tu crées les
> > composants graphiques à droite pour l'édition d'un chapitre (un
> > seul jeu de composants pour tous les chapitres), quand un
> > utilisateur clique sur le chapitre dans l'arborescence tu copies
> > les données à éditer dans les composants d'édition à droite, quand
> > il arrête l'édition de ce chapitre tu recopies les données du
> > composant d'édition dans les objets de données.
> >
>
> Je comprends. Mais si je fais ce qui suit est-ce que ce n'est pas une
> manière valable pour lier l'inteface graphique avec l'élément du
> Vector qui lui correspond?
>
> JScrollPane jsp = (JScrollPane) tabbedPane.getSelectedComponent();
> JViewport jvp = (JViewport) jsp.getComponent(0);
> jtextPane = (JTextPane) jvp.getView();
>
> // Je suppose qu'il existe un vector
> (JTestPane) ((Chapter) (vector.getChapter())).getMainText() =
> jtextPane;
(je ne me souviens plus bien des composants Swing, est-ce que JTextPane
permet bien de modifier son contenu ? disons que oui pour ce message)
Là je ne vois pas bien ce que tu fais : la ligne ci-dessus ne semble
pas être du code qui fonctionne (tu ne peux pas affecter jtextpane au
résultat de getMainText()).
Pour y voir plus clair il faudrait avoir ton modèle de données (les
données indépendamment de leur représentation graphique).
Déjà il faut choisir s'il existe un composant graphique par chapitre. À
mon avis ça ne sert à rien et ça complique les choses.
Donc en supposant que ce ne soit pas le cas, dans la fenêtre tu peux
avoir des attributs tels que (j'ai nommé en français les variables et
types déclarés par le programme dans cet exemple) :
// La liste des chapitres ; pas obligatoirement stockée dans la
// fenêtre, mais si c'est une appli simple ça peut contenir.
// Vector ne semble plus très utilisé ces temps-ci, au profit des
// classes directement associées à l'interface List, comme
// ArrayList().
List<Chapitre> chapitres ;
// Le chapitre en cours d'édition, éventuellement null (je suppose
// qu'à certains moment il n'y a rien en cours d'édition).
Chapitre chapitreEnEdition ;
// L'objet graphique permettant d'éditer le texte d'un chapitre.
// Il peut y en avoir un pour les note, ... : un pour chacun
// des textes associés au chapitre à éditer.
JTextPane txtChapitre ;
> Pour résumer, cela correspond à:
>
> JTextPane du Vector = JTextPane de la représentation graphique du
> texte.
>
> Si je fais ça, quand le JTextPane à l'écran est modifié est-ce que le
> JTextPane dans le Vector l'est aussi automatiquement? Puisqu'ils ont
> la même référence normalement...
Je ne pense pas que la ligne plus haut fonctionne. Sinon tu pourrais
effectivement associer à un chapitre une référence vers un objet
JTextPane existant.
En général on essaie plutôt de faire l'inverse : l'interface fait
référence aux données mais pas l'inverse (=> il est plus facile de
consulter/modifier les données par ailleurs, par exemple pour les
indexer, faire un remplacement automatique dedans, ...), sans se
préoccuper de leur représentation graphique.
>
> > Tu peux aussi faire quelque chose de plus automatique, comme
> > variante du paragraphe précédent : intercepter l'événement
> > indiquant que le texte d'une zone de saisie a changé et modifier
> > l'objet de données correspondant (il faut donc un lien vers l'objet
> > de données représentant le chapitre en cours d'édition).
>
> Là, je te demanderai plus d'explications car je ne sais pas comment
> faire.
Tu sais traiter les événements en java ? Si ce n'est pas le cas
mentionne-le parce qu'il faudra creuser cette partie, ça va t'être très
utile.
Donc pour détecter les modifications dans le composant graphique, tu
peux utiliser
txtChapitre.getDocument.addDocumentListener (...) ;
et dans cette fonction tu mettrais à jour le texte du chapitre via
quelque chose comme
chapitre.setTexte (txtChapitre.getText()) ;
(en supposant qu'il existe un attribut texte à ton chapitre)
> > La solution retenue peut dépendre de ce que tu veux faire des
> > données : par exemple si tu veux pouvoir faire en même temps que
> > l'édition d'un chapitre une recherche dans l'ensemble des
> > chapitres, celui-ci compris, mieux vaut que les données soient à
> > jour dans les objets de données. Si au contraire tu veux que
> > l'utilisateur puisse valider/annuler l'édition d'un chapitre, il
> > peut être plus simple de ne recopier les données du composant
> > graphique dans l'objet de données que lors de la validation (bien
> > qu'on pourrait faire autrement aussi). À toi de voir comment tu
> > manipules tes données.
>
> Ok, je comprends maintenant pourquoi dans le logiciel Plume Creator la
> sauvegarde est automatique. Je pense que dans ma version il faudra que
> l'utilisateur choisisse de sauver. Ça évitera des pertes de données.
Tu peux choisir l'un ou l'autre.
Attention, il y a deux niveau ici :
- La communication entre le composant graphique et les données du
chapitre (est-ce que les données saisies sont immédiatement
modifiées dans l'objet de données, quand on quitte le
chapitre, ...).
- La sauvegarde dans le fichier, qui n'intervient pas forcément à
chaque fois qu'on saisit un caractère (ça peut être quand on
choisit de sauvegarder, quand on change de chapitre, toutes les
n secondes, ...).
Et la question de ce qui est annulable semble effectivement importante
pour ces questions.
> > De rien, n'hésite pas à poser tes questions.
>
> Merci. C'est très sympa de ta part. Si mon logiciel voit le jour, je
> te mettrai dans les Crédits. :)
Ne t'inquiète pas pour ça, les groupes de discussion c'est fait pour
répondre aux questions ;) .
Back to fr.comp.lang.java | Previous | Next — Previous in thread | Next in thread | Find similar
Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-03 16:16 +0000
Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-07 15:03 +0100
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-09 01:28 +0000
Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-09 09:15 +0100
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-11 13:48 +0000
Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-11 18:33 +0100
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-14 03:39 +0000
Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-14 12:27 +0100
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-15 03:48 +0000
Re: Aide pour une stratégie de programmation. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2017-11-15 08:44 +0100
Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-15 09:10 +0100
Re: Aide pour une stratégie de programmation. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2017-11-15 09:31 +0100
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-17 01:45 +0000
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-15 04:45 +0000
Re: Aide pour une stratégie de programmation. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2017-11-15 09:44 +0100
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-17 01:33 +0000
Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-15 09:57 +0100
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-17 01:24 +0000
Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-17 08:32 +0100
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-19 06:08 +0000
Re: Aide pour une stratégie de programmation. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2017-11-19 08:38 +0100
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-19 12:27 +0000
Re: Aide pour une stratégie de programmation. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2017-11-20 01:33 +0100
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-20 20:51 +0000
Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-19 10:13 +0100
Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-19 10:51 +0100
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-19 12:20 +0000
Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-19 14:42 +0100
Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-19 15:55 +0000
csiph-web