Utilisation de JTable

gabsi08aymen Messages postés 15 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 8 octobre 2009 - 5 août 2008 à 08:09
gabsi08aymen Messages postés 15 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 8 octobre 2009 - 7 août 2008 à 11:29
Bonjour,
j'ai une requette sql qui me retourne une table avec 21 colonnes.Comment je peux afficher le contenu du résultat dans une JTable et ajouter des scrollbar si nécessaire?Et comment je peut imprimer cette JTable?Svp donner moi le code java complet car j'ai déjà essayé plusieurs mais ça n'a pas marché.

4 réponses

indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
5 août 2008 à 09:06
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
5 août 2008 à 12:40
Salut,

la demande de code tout cuit est interdite ici.. postes ton code et nous allons te guider à trouver la solution..

pour la JTable passes par un TableModel..
ajoutes un JScrollPane au JTable puis affiche le JScrollPane..

enfin, penses à relire le règlement..

_____________________
Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
http://books.go%3C/body
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
5 août 2008 à 18:29
If faut rien inventer, c'est tout dans le réseau (il suffit de chercher et de trouver!):
http://forums.sun.com/thread.jspa?forumID=57&threadID=595582&start=2
Depuis java 1.5 on a la méthode JTable#print() qui affiche un dialogue d'impression, et puis imprime cette JTable dans le mode PrintMode.FIT_WIDTH. Un dialogue modal de progrès, avec option d'abandon, sera affiché pendant l'impression:
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JTable.html#print()
0
gabsi08aymen Messages postés 15 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 8 octobre 2009
7 août 2008 à 11:29
Bonjour,
bon je suis arrivée à remplir ma JTable à partir d'une requette sql et l'imprimer mais il me reste un seul problème c'est que ma JTable a 21 colonnes et elles s'affichent avec une taille très petite.Comment je peux modifier la taille de mes colonnes et mes lignes sachant que parfois une case contient plusieurs caractères donc lorsque la taille de la case est petite,ils ne s'affichent pas tous?
Voilà mon code:

public void affichage()
     {
 table = remplirTable(); //la table sera initialisée par la liste des administrateurs envoyée par la fct 'remplirTable()'
          
           table.setPreferredScrollableViewportSize(new Dimension(500, 120)); //prendre la dimension de la table
           // Un panneau, placé dans la fenêtre
           JScrollPane panneau = new JScrollPane(table,
                                                 JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                                                 JScrollPane.
                                                 HORIZONTAL_SCROLLBAR_AS_NEEDED); //mettre la table dans ascenceur
           panneau.setPreferredSize(new Dimension(550, 80));
           this.setLocation(100, 100);
           ContentPane.add(panneau, BorderLayout.CENTER);

}

JTable remplirTable() {
                Vector tabLignes=new Vector(), nomCols=new Vector();
                int i;
               
                try {
                  stmt=connect.createStatement();
result = stmt.executeQuery("select * from equipement" );
ResultSetMetaData md = result.getMetaData();
               
                  nomCols = new Vector();
                  for( i=1; i<=md.getColumnCount (); i++)
                  {
                   nomCols.add(md.getColumnLabel(i));


                  }
                  // Mémoriser le résultat dans la JTable
                  while( result.next()) {
        
                   //placer les valeurs dans Vector ligne
                     Vector ligne=new Vector();
                     //le 3 designe le nombre de colonnes qui doit etre connu dans la table
                     for(i=1; i<=md.getColumnCount (); i++)
                     {
                         String ch=result.getString(i);
                       
                         ligne.add(ch);
                     }
                   tabLignes.add(ligne);
                   }
                 }
               catch(Exception e) {
                   System.out.print("erreur1 "+e.getMessage());//récuperer le message d'erreur en cas d'erreur
               }


               return new JTable(tabLignes,nomCols);//type de retour qui initialise le JTable par la liste des vecteur envoyées remplis des tables
          }

 void jMenuItem37_actionPerformed(ActionEvent e) {


        PrinterJob pj = PrinterJob.getPrinterJob();
        System.out.println("Imprimerrrrrrrrr");
        pj.setPrintable(Tableau.this);
        System.out.println("Apresssssssssssssssssssss");
        pj.printDialog();
        try {
          pj.print();
        }
        catch (Exception PrintException) {
        }


      }


      public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws
          PrinterException {
        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(Color.black);
        int fontHeight = g2.getFontMetrics().getHeight();
        int fontDescent = g2.getFontMetrics().getDescent();


    // laisser de l'espace pour le numero de page
        double pageHeight = pageFormat.getImageableHeight() - fontHeight;
        double pageWidth = pageFormat.getImageableWidth();
        double tableWidth = (double) table.getColumnModel().getTotalColumnWidth();
        double scale = 1;
        if (tableWidth >= pageWidth) {
          scale = pageWidth / tableWidth;
        }
        double headerHeightOnPage = table.getTableHeader().getHeight() * scale;
        double tableWidthOnPage = tableWidth * scale;
        double oneRowHeight = (table.getRowHeight() + table.getRowMargin()) * scale;
        int numRowsOnAPage = (int) ( (pageHeight - headerHeightOnPage) /
                                    oneRowHeight);
        double pageHeightForTable = oneRowHeight * numRowsOnAPage;
        int totalNumPages = (int) Math.ceil( ( (double) table.getRowCount()) /
                                            numRowsOnAPage);
        if (pageIndex >= totalNumPages)
          return NO_SUCH_PAGE;


        g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
    // en bas au centre
        g2.drawString("Page: " + (pageIndex + 1), (int) pageWidth / 2 - 35,
                      (int) (pageHeight + fontHeight - fontDescent));
        g2.translate(0f, headerHeightOnPage);
        g2.translate(0f, -pageIndex * pageHeightForTable);
    // si cette partie de la page est plus petite
    // que la taille disponible, alors découper les contours appropriés
        if (pageIndex + 1 == totalNumPages) {
          int lastRowPrinted = numRowsOnAPage * pageIndex;
          int numRowsLeft = table.getRowCount() - lastRowPrinted;
          g2.setClip(0, (int) (pageHeightForTable * pageIndex),
                     (int) Math.ceil(tableWidthOnPage),
                     (int) Math.ceil(oneRowHeight * numRowsLeft));
        }
    // sinon découper la zone disponible toute entière
        else {
          g2.setClip(0, (int) (pageHeightForTable * pageIndex),
                     (int) Math.ceil(tableWidthOnPage),
                     (int) Math.ceil(pageHeightForTable));
        }
        g2.scale(scale, scale);
        table.paint(g2);
    // dessiner les entêtes en haut
        g2.scale(1 / scale, 1 / scale);
        g2.translate(0f, pageIndex * pageHeightForTable);
        g2.translate(0f, -headerHeightOnPage);
        g2.setClip(0, 0, (int) Math.ceil(tableWidthOnPage),
                   (int) Math.ceil(headerHeightOnPage));
        g2.scale(scale, scale);
        table.getTableHeader().paint(g2);
        return Printable.PAGE_EXISTS;
      }
0
Rejoignez-nous