Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.java > #1606
| Path | csiph.com!feeder.erje.net!1.eu.feeder.erje.net!news.albasani.net!news.trigofacile.com!.POSTED.reverse-90.fdn.fr!not-for-mail |
|---|---|
| From | Yliur <yliur@free.fr> |
| Newsgroups | fr.comp.lang.java |
| Subject | Re: Aide pour une stratégie de programmation. |
| Date | Wed, 15 Nov 2017 09:57:22 +0100 |
| Organization | Groupes francophones par TrigoFACILE |
| Message-ID | <20171115095722.5d432934@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> <20171111183357.7277d116@free.fr> <5a0a6560$0$3841$426a74cc@news.free.fr> <20171114122759.223fae94@free.fr> <5a0bc677$0$3851$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="28211"; mail-complaints-to="abuse@trigofacile.com" |
| X-Newsreader | Claws Mail 3.15.1-dirty (GTK+ 2.24.31; x86_64-pc-linux-gnu) |
| Xref | csiph.com fr.comp.lang.java:1606 |
Show key headers only | View raw
Le 15 Nov 2017 04:45:43 GMT
bloiiing <bloiiing.invalid@yahoo.com> a écrit :
> Je viens de comprendre ce que tu veux dire par séparer les données de
> l'inteface graphique. Ou du moins je pense avoir compris l'idée.
>
> Comment t'y prendrais-tu pour sauver les textes? Dans des String, des
> JTextArea, des Vector de String ou autres? Moi je les sauvegardais
> dans des JTextPane mais je viens de comprendre que si je veux
> effectuer un traitement sur ces données ce sera plus compliqué que
> sur des String ou des Vector<String>.
C'est bien ça. Les JTextPane sont des objets graphiques, il vaut mieux
les utiliser pour les représentations graphiques mais pas pour du
stockage de données, ce sera plus simple et plus clair.
Je vais essayer de détailler/expliquer ce sur quoi j'étais parti au
début.
Il faut d'abord définir des classes permettant de stocker les données,
on ne s'intéresse pas à leur représentation graphique à ce niveau. Donc
on aurait par exemple une classe Chapitre définie comme ça (c'est
simplifié, tu auras sans doute plus d'éléments) :
public class Chapitre
{
private String titre ;
private String corps ;
}
Il doit y avoir d'autres concepts manipulés par ton programme, c'est le
moment d'en faire une liste (c'est toujours utile) : des personnages,
des lieux, ... ? Quelles sont les notions qui vont être manipulables ?
En as-tu une liste ?
Ensuite on va avoir une fenêtre pour représenter graphiquement une
liste de chapitres et un chapitre en cours d'édition. Ici aussi c'est
simplifié pour l'instant. La classe devrait ressembler à ça (pour les
composants graphiques, j'utilise une convention consistant à indiquer
leur type, puis un souligné puis leur nom ; pratique parce qu'il y a
deux informations importantes dans les composants graphiques) :
public class FenPrincipale extends JFrame
{
private JList liste_chapitres ;
private JTextField txt_titreChapitreEdite ;
private JTextPane zonetxt_corpsChapitreEdite ;
}
Note que JList est un composant graphique permettant de représenter une
liste visuellement et d'interagir avec elle, alors que plus haut
List<Chapitre> permet simplement de stocker des données (les
chapitres), sans se préoccuper de représentation visuelle.
Et pour lier le tout, on aura une classe référençant les éléments
principaux de l'application. Elle peut ressembler à ça :
public class Application
{
private List<Chapitre> chapitres ;
private FenPrincipale fenPrincipale ;
}
Note que les chapitres et autres données à venir pourraient être
regroupées dans une classe DonneesAppli, elle-même référencée dan
Application, mais on verra plus tard quand ça s'étoffera.
Côté fenêtre c'est pareil : on va sans doute avoir des panneaux et
autres, pas juste trois composants posés directement dedans, mais on
verra ça plus tard aussi, ce n'est pas nécessaire pour cette
explication .
Pour le rangement en revanche mieux vaut bien séparer les choses, ça
permet de mieux saisir leur rôle. Si src est le répertoire contenant
tes sources, ça peut se présenter comme ça :
src
donnees
Chapitre
interfacegraphique
FenPrincipale
traitements
... (ici les chargements/sauvegardes par exemple)
Application
Je te laisse nommer les choses à ta convenance, tout ça n'est qu'un
exemple.
Ça c'est pour la base de l'organisation des données, c'est très
important que ce soit clair.
Maintenant un aperçu du fonctionnement de l'ensemble, tu me diras
si c'est clair...
L'idée générale est celle-ci :
Fichier <- chargement/sauvegarde -> Données <- édition-> Fenêtre
Les étapes importantes :
- À partir d'un fichier on charge les données en mémoire (classe
Chapitre : il y aura un objet par chapitre).
La JList de la fenêtre est à ce moment remplie aussi avec les
chapitres (on verra plus tard comment la synchroniser avec la
liste de chapitres, je ne détaille pas ça pour l'instant).
=> Pour la réalisation de cette partie on verra plus tard.
- Quand on clique sur un chapitre dans la liste pour l'éditer, les
deux champs de saisie de la fenêtre vont être remplis avec les
textes issus du chapitre.
=> Il y aura quelque part (en réaction à un clic sur un élément
de la JList) un bout de code de la forme
fenPrincipale.txt_titreChapitreEdite.setText (chapitre.getTitre()) ;
fenPrincipale.zonetxt_corpsChapitreEdite.setText (chapitre.getCorps()) ;
- À ce moment l'utilisateur peut éditer les textes (ici titre et
corps) du chapitre dans les deux composants graphiques. Ces
textes sont édités uniquement dans le composant graphique, les
données du chapitre dans l'objet de la classe Chapitre ne sont
pas modifiées.
- À un moment ou un autre, les données éditées doivent être
envoyées dans l'objet Chapitre. Là c'est un choix d'ergonomie de
ta part : est-ce que l'édition de ces données doit être
annulable ? Est-ce que le texte d'un chapitre peut être visible à
différents endroits simultanément ? Est-ce qu'on peut faire des
recherches dans le texte des chapitres ? Suivant la réponse à
ces questions et quelques autres, le moment où la synchronisation
sera effectuée (l'événement qui la déclenchera) sera différent.
=> Dans les deux cas il y aura un bout de code ressemblant à ça :
chapitre.setTitre (fenPrincipale.txt_titreChapitreEdite.getText()) ;
chapitre.setCorps (fenPrincipale.zonetxt_corpsChapitreEdite.getText()) ;
- À un autre moment, à définir également, les données seront
sauvegardées dans le fichier.
=> Opération symétrique du chargement depuis le fichier, à voir
en même temps.
Est-ce plus clair comme ça ?
Pour avancer à partir de là, il faut d'une part définir les autres
données manipulées par l'application (personnages, ... ?), les
informations qui les composent (j'ai juste noté titre et corps dans
les chapitres, mais il y a sans doute d'autres choses) ; d'autre part
définir à quel moment les textes sont synchronisées entre les
composants graphiques et les données de l'application. Pour cette
deuxième partie, il y a plusieurs solutions possibles, à voir en
fonction de ce que fait le reste de l'appli ; pour l'instant on
pourrait se contenter de copier les données des composants graphiques
dans les données de l'appli quand on passe à un autre chapitre, c'est
simple à mettre en œuvre et c'est un bon exemple ; il sera toujours
temps de changer d'avis quand tu auras bien compris le principe de
fonctionnement.
Dis-moi si le fonctionnement général te paraît plus clair ou si tu
as des 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