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

greglover Messages postés 58 Date d'inscription mardi 16 janvier 2007 Statut Membre Dernière intervention 10 mars 2008 - 6 févr. 2007 à 11:34
greglover Messages postés 58 Date d'inscription mardi 16 janvier 2007 Statut Membre Dernière intervention 10 mars 2008 - 7 févr. 2007 à 13:50
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

lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
6 févr. 2007 à 19:48
tu dois bien les passer quelque part ces valeurs d'entêtes de colonnes? non? il te suffit de retrouver cette variable
lafolle
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
6 févr. 2007 à 22:27
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"
0
greglover Messages postés 58 Date d'inscription mardi 16 janvier 2007 Statut Membre Dernière intervention 10 mars 2008
7 févr. 2007 à 13:50
@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.
0
Rejoignez-nous