IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JTable] agencer une JTable pour l'impression.


Sujet :

Composants Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut [JTable] agencer une JTable pour l'impression.
    Bonjour,
    j'ai une JTable qui peut posséder un nombre variable de colonnes (minimum 10) et un nb variable de ligne.s
    Je veux imprimer cette Jtable, seulement, mes 10 colonnes au miminum ne rentrent pas sur une feuille, j'aimerais donc imprimer sur une feuille on va dire les 6 premieres colonnes, et sur une deuxieme feuille imprimer les 4 autres, mais pour ne pas se perdre sur la deuxieme feuille je voudrais qu'il y ai aussi les 2 premieres colonnes qui permettront de repérer les différentes lignes.
    J'ai utilisé un TableModel pour la table, mais je ne sais pas si je dois créer plusieurs models suivant l'impression (ce qui serait moche d'un point de vu conception) genre un model pour la page 1 et un autre pour la page 2 (à savoir que si j'ai 23colonnes, il me faudrait 4pages... !!!)

    donc si il y a une solution, je suis preneuse.
    Merci d'avance.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 92
    Points
    92
    Par défaut
    Salut lilou77,
    là non plus t'es pas au bout de tes peine je crois, va falloir implementer quelques méthodes ... je procèderai comme suit :
    1 ère option : résuire la taille des colonnes, donc des chaines, pour que toutes les colonnes tiennent dans un format paysage ... à oublier je pense si tu veux pas perdre d'info ... (avec 25 colonnes ...)
    2 ème option : se dire que chaque page est un document distinct :
    - on créera un document pour chaque page (extends PlainDocument)
    - le vecteur de lignes global sera remplacé par un vecteur comportant moins de colonnes, donc des vecteurs de tailles moindres, alors que dans le même temps on reportera dans un autre vecteur les vecteurs qui font le complément, nombre de colonnes tronquée (indice -2 si tu veux un chevauchement de 2) , pour former la 2 ème page et ainsi de suite pour toutes les pages.
    l'iteration des lignes, des mots dans les lignes (séparés par x espaces ou tabulations, fera l'objet d'une autre méthode de mise en pages, et fournira le paramètre ligne à une méthode insertLigne pour le document ...
    Si tes colonnes tiennent sur du A3 paysage, toutes tes colonnes pourraient être affichées bonnard.
    j'espère que çà te donne des idées...
    A+

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    waouh !!
    euh, en fait j'ai encore jamais rien imprimé, je ne connais pas encore vraiment le PlainDocument,, pourrais tu me donner un exemple tout simple d'impression, pour que j'essaie de l'adapter avec ma Jtable et ta 2ieme option.
    Aussi peux tu me dire ce que tu sous entend avec tes vecteurs ? je veux dire tu parle de quel composant, je récupèrerais mes colonnes ?
    deja merci pour ta reponse.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 92
    Points
    92
    Par défaut
    le model de la table (TableModel) tu l'as bien créer avec DefaultTableModel ?
    DefaultTableModel recoit bien :
    - soit une Object [][] data pour les données de la table (sans les noms de colonnes)(Vector possède un champ Object [] data qui sont ses éléments)
    - soit une vector de vector --> une ligne == un vecteur de n colonnes
    == un élément du vector global de taille nLignes,
    un veceur de vecteur, c'est un peut un [][] Object.

    ainsi tu manipuleras soit un [][] soit un v de v selon le constructeur utilisé
    personnellement je préfère avec v.
    maintenant si tu as étendu la classe DefaultTableModel la recup du model c'est du gateau vu les méthodes et champs protected auquels tu auras alors acces style convertToVector(Object [][] tab) etc... même pas besoin en fait, look at this :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    getDataVector() 
              Returns the Vector of Vectors that contains the table's data values.
    ou encore : 
    convertToVector(Object[][] anArray) 
              Returns a vector of vectors that contains the same objects as the array.
    un vrai bonheur ...
    je te laisse explorer, à tout à l'heure...

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    je crois avoir compris lol,
    donc moi je récupère mon vector de mon grand tableau...
    avec getDataVector();
    je le le tronque en récupérent que ce qui m'intéresse, en rajoutant mes 2colonnes que je veux garder... et ensuite je recréer un model en lui passant directement mon vector ?
    c ca ?
    lol

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 92
    Points
    92
    Par défaut
    Qu'entends tu par recréer un model ?
    le model de la table lui ne doit pas être modifié, tu veux mettres en page
    les données de la tables, pas changer l'aspect de la table elle-même ... ?
    tu recopies les parties respectives de chaque page dans de nouveaux vecteurs pour chaque page, mais n'agis pas sur le model de la table ...
    do you see ? si getDataVector() revoie un clone çà va, mais si non un :
    v.add(((Vector) vGlob.get(i)).remove(j))
    -- recup de la cellule d'indice j dans la ligne d'indice i --
    modifierai le model lui-même , d'ailleurs remove contre indiquer dans les itérations.get(j) c'est mieux ...
    à toute.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    ok, donc si j'ai bien compris je n'imprime plus mes JTable mais mes vecteurs directement. ?

    dans ce cas là comment on fait ?lol

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 92
    Points
    92
    Par défaut

    tiens j'avais pas pensé à imprimer la table carrément tel un tableau, attends je vais voir un truc et j'reviens ...

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    alors je n'ai rien compris de ce que tu voulais que je fasse.
    Une fois que j'ai créer mon nouveau vecteur... à partir de celui de mon TableModel, qu'est ce que j'en fais... lol

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 92
    Points
    92
    Par défaut
    bon non j'ai rien vu qui correspondais...
    comment tu n'as rien compris .........
    écoute je veux bien te le faire, humblement çà ira plus vite, c'est pas que t'entrave queutchi où qu'té noob mais j'ai plus facile à faire qu'à expliquer, à condition que je parte de ton travail déjà effectué, je te propose donc de m'envoyer le repertoire sur lequel tu batailles, j'ouvre le projet, je rajoute les méthodes que j'imagine, et je te renvoie çà avant demain on fait comme çà
    ok çà marche voili voilà. 8)
    ps : la proposition c'est sérieux, pour le reste j'en pense pas un mot, hein ?

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    c gentil merci
    je t'ai envoyé ca normalement

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 92
    Points
    92
    Par défaut
    Re lilou77,
    quelques questions :
    comment entends tu gérer le problème de la largeur des chaines, valeurs des cellules de la table ? pour afficher sous forme de tableau, il faut que toutes les String soient de même taille...
    donc, est-ce que tu prévois un contrôle et une rectification :
    si oui : et-ce qu'il faut prendre comme model de chaîne la plus longue ou une chaîne de longueur standard et bourrer de vide ou tronquer style
    'valeur trop longue pour ...' et finir par 3 p'tit points par exemple.
    est ce que tu veux afficher le même nombre de colonnes par page ou ça dépend de ce formatage de ligne ?
    Imprimer dans un fichier ne soulève aucun probleme, c'est bien de lancer un PrinterJob pour la table qui t'interesse ici ?
    voilà, répond moi vite que je m'y mette.
    à toute.

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    olala les questions, pour la largeur des colonnes, je pensais prendre le titre des colonnes et suivant le colonnes, par exemple dans le fichier q je t envoyé les colonnes qui sont rajouté pour les échantillons devront toute avoir la meme taille, et elle correspondra à la taille du tritre à savoir "Echant. 1" ou "Echant 99." au max, aussi il faut pas que cela soit trop sérré : genre " Echant. 1 ".
    Ensuite, dans les autre colonnes je sais ce qui il aura : un format date : 06/12/2005, un format heure 11:00:00 donc il faut que cela rentre biensur. a savoir, que ma table ne sera pas éditable, elle ne fait qu'afficher des valeurs déjà rentré.
    ensuite, normalement l'utilisateur peut modifier la taille des colonnes, si il décide de la faire plus petite que son contenu c'est son probleme (mais affichage de "06/12/2..." par ex), moi par défaut j'affiche tout.

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    en fait sur la 1ere page je veux forcément les 8 premiere colonnes, apres je peux rajouter au maximum les 3premiere colonne d'échantillons, et ensuite pour les autres échantillons, je passe sur une autre feuilles.

    meme si la table n'a que 2 lignes je passe sur une autre feuille, par contre si il y a plein de lignes et que cela nécéssite 2feuille pour imprimer le nb de ligne, je veux que 1ere page se soit mes 8premier colonne avec les n lignes, deuxieme page mes dernières colonnes (indexé avec la 1ere colonne) et mes n lignes. 3ieme page la suite des ligne de ma 1ere et 4ieme page, la suite des ligne de ma 2ieme page.
    je ne sais pas si g été clair...

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    pour PrinterJob, moi pour l'instant je ne sais pas du tout comment on imprime, je n'ai encore jamais fait et jamais vu, donc fait comme tu as l'habitude, et je v apprendre a m'en servir.

    merci encore pour tout

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 92
    Points
    92
    Par défaut
    oui mais le fait que l'utilisateur réduise la taille d'une colonne en visuel sur son interface ne change en rien la longueur de la chaîne que la cellule contient, là n'est pas le problème, mais bon j'ai ma réponse, et tout est *String pour moi.

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 92
    Points
    92
    Par défaut
    tres clair,ok à toute...

Discussions similaires

  1. Insertion d'une JTable dans une JTable
    Par Dark_TeToN dans le forum Composants
    Réponses: 16
    Dernier message: 14/10/2010, 16h18
  2. Inserer une Jtable dans une Jtable
    Par sylv179 dans le forum Composants
    Réponses: 2
    Dernier message: 22/12/2009, 12h30
  3. [JTable] Créer une JTable vide avec des noms de colonnes.
    Par Cyborg289 dans le forum Composants
    Réponses: 2
    Dernier message: 27/09/2005, 15h54
  4. Réponses: 4
    Dernier message: 09/02/2005, 10h44
  5. [JTable] Rafraichir une JTable
    Par nesbla dans le forum Composants
    Réponses: 4
    Dernier message: 08/12/2004, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo