[JTable] Récupérer l'entête des colonnes

Signaler
Messages postés
58
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
10 mars 2008
-
Messages postés
58
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
10 mars 2008
-
Bonjour,

je cherche à récupérer l'entete des colonnes de ma Jtable pour qu'ils soient présent dans ma PdfTable.

Voici mon code actuelle, il fonctionne très bien et permet de convertir une JTable en PdfTable pour export avec iText :

merci d'avance pour votre aide

import java.io.FileOutputStream;
import java.sql.DriverManager;
import java.util.Random;
import java.util.Vector;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;

import com.lowagie.text.Cell;
import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.PdfWriter;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSet;
import com.mysql.jdbc.ResultSetMetaData;
import com.mysql.jdbc.Statement;

/**
 * Constructing a JTable and printing it to PDF.
 */
public class Export extends JPanel {
    private static final long serialVersionUID = 8461166420041411734L;
   
    /**
     * Exporte la table en fichier pdf
     */
    public void print(JTable table,String classe,int type) {

        //ouverture du document
        Document document = new Document(PageSize.A4.rotate());
        document.setMargins(20, 20, 10, 10);
       
        //init une table pdf basic
        Table tablePdf = null;
       
        //génération d'un numéro d'édition
        int rnd=new Random().nextInt(100);
       
        try {
            //recup de l'instance de pdfwritter
            PdfWriter writer;
            if(type==0){
                PdfWriter.getInstance(document, new FileOutputStream("export\\classe\"+classe+" édition standard n°"+rnd+".pdf"));}
            else{
                PdfWriter.getInstance(document, new FileOutputStream("export\\classe\"+classe+" édition numéro n°"+rnd+".pdf"));}
           
            //ouverture du codument
            document.open();
           
            //prépare la pdf table
            tablePdf = new Table(table.getColumnCount(),table.getRowCount());
           
            //on parse toute la JTABLE (Pour chaque colonne et pour chaque ligne)
            for (int i = 0 ; i < table.getColumnCount() ; i++)
                {
                    for (int j = 0 ; j < table.getRowCount() ; j++)
                    {
                        // On cré une nouvelle cellule que l'on ajoute à la pdf table
                        try
                        {
                            Cell cell=new Cell(table.getValueAt(j, i).toString());
                            cell.setLeading(11);
                            tablePdf.addCell(cell, j, i);
                        }
                        catch (NullPointerException npe){}
                    }
                }
           
            // différents paramêtres de la table (bordure, alignement contenu, taille tableau
            tablePdf.setSpaceInsideCell(2);
            tablePdf.setBorderWidth(1);
            tablePdf.setTableFitsPage(true);
            tablePdf.setAlignment(Element.ALIGN_MIDDLE);
            tablePdf.setAutoFillEmptyCells(true);
            tablePdf.setWidth(100);
           
            // taille colonne
            int headerwidths0[] = {17, 10, 8, 50, 15};
            int headerwidths1[] = {17, 10, 10, 10, 10, 10, 10, 10};
            if (type==0) {
                tablePdf.setWidths(headerwidths0);
            } else {
                tablePdf.setWidths(headerwidths1);
            }
           
            //création du paragraphe centré auquel on ajoute notre element pdf table ainsi qu'un titre
            Paragraph para= new Paragraph(new Chunk("Classe de "+classe));
            para.setAlignment(Element.ALIGN_CENTER);
            para.add(tablePdf);
            document.add(para);

            //fermeture du document
            document.close();
           
            // boite de dialogue confirmant l'export
            if(type==0){
            JOptionPane.showMessageDialog(null, "Fichier : "+classe+" édition standard n°"+rnd+" généré", "Fichier généré", JOptionPane.INFORMATION_MESSAGE);}
            else{
                JOptionPane.showMessageDialog(null, "Fichier : "+classe+" édition numéro n°"+rnd+" généré", "Fichier généré", JOptionPane.INFORMATION_MESSAGE);}
       
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }   
}

3 réponses

Messages postés
406
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
29 juin 2009
7
tu dois bien les passer quelque part ces valeurs d'entêtes de colonnes? non? il te suffit de retrouver cette variable
lafolle
Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
17
va faire un tour cote javadoc genre getTableHeader dans JTable ou les model

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Messages postés
58
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
10 mars 2008

@lafolle : les valeurs des columnsheader, ils doivent bien passés avec la JTable en argument. Mais je n'arrive pas à les récupérer.

@sheorogath : ok je vais aller voir.