Aide Impression

Fermé
Titeuf - 11 mai 2005 à 19:38
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 - 12 mai 2005 à 11:30
Salut
Voici mon code
Le probleme c'est que ca imprime mais pas que le tableau toute la fenetre
donc si ma liste est trop grande c'est tronqué etj'ai mes boutons qui s'imprime aussi
Pouvez vous m'aider car la je viens seulement de me remettre au java et c'est dur
Thanks



import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.Applet;
import java.lang.*;
import java.sql.*;
import java.util.*;
import java.awt.print.*;
import javax.swing.event.*;
import java.awt.geom.*;


/**
 * PdtCmde.java
 * @author log2n
 * @version 1.0
 */
public class PdtCmde extends MyJFrame implements Printable
{
    private MyPanel panel;

    //definition de la methode print de l'interface "Printable"
    public int print(Graphics g,PageFormat pageFormat,int pageIndex) throws PrinterException
    {
   if(pageIndex>0)
       return NO_SUCH_PAGE;
   
   // Mettre le composant à l'échelle
   Graphics2D g2D = (Graphics2D) g;
   
   // Calcul et adaptation dans la page
   double scaleX = pageFormat.getImageableWidth()/getWidth();
   double scaleY = pageFormat.getImageableHeight()/getHeight();
   
   double scale = Math.min(scaleX,scaleY);  //  Obtenir le facteur minimum
   
   // Déplacer l'originee du papier pour l'impression du coin de la page 
   g2D.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
   g2D.scale(scale,scale);                  //  Appliquer le facteur d'échelle
   
   print(g2D);                              //  Tracer le composant
   return PAGE_EXISTS;
    }
   
    //renvoi l'objet courant de type "Printable"
    public PdtCmde getTableau(){return this;}

    /**
     * MyPanel
     * @author  log2n
     */
    class MyPanel extends JPanel
    {
   
   private JTable table;
   private JButton b_imp=new JButton("Imprimer");
   private JButton b_quit=new JButton("Quitter");
   private JScrollPane scrollPane;
   
   class BouttonImp implements ActionListener
   {
    
       public void actionPerformed(ActionEvent e)
       {
      PrinterJob printJob = PrinterJob.getPrinterJob(); // Obtenir un objet imprimable
      
      // L'application de la fenêtre correspond à la page source
      printJob.setPrintable(getTableau());
   
      if(printJob.printDialog())    // Affichage du dialogue pour l'impression et impression
          {
         try
             {
            printJob.print();
             }
         catch(PrinterException pe)
             {
            System.out.println(pe);
            JOptionPane.showMessageDialog(null,"Erreur lors de l'impression du tableau","Erreur d'impression",JOptionPane.ERROR_MESSAGE);
             }
          }
      
       }
   }

   /** Constructeur MyPanel
    * @param nomCol un tableau de chaine de caracteres
    * @param data un tableau d'objets
    */
   MyPanel(String[] nomCol,Object[][] data)
   {
       table=new JTable(data,nomCol);
   
       scrollPane = new JScrollPane(table);
       table.setEnabled(false);
       scrollPane.setBounds(35,20,610,447);
       add(scrollPane);

       b_imp.addActionListener(new BouttonImp());
       b_imp.setBounds(230,480,100,21);
       add(b_imp);

       b_quit.addActionListener(new ActionListener()
      {
          public void actionPerformed(ActionEvent ev)
          {
         dispose();
          }
      });
       b_quit.setBounds(350,480,100,21);
       add(b_quit);   
   }
    }
   
   
    /** Constructeur MyPanel
     * @param titre une chaine de caracteres
     * @param nomCol un tableau de chaine de caracteres
     * @param data un tableau d'objets
     */
    PdtCmde(String titre,String[] nomCol,Object[][] data)
    {
   super(titre,530,560);
   panel = new MyPanel(nomCol,data);
   
   setContentPane(panel);

   setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
   
   setVisible(true);
    }
   
    public static void main(String[] args)
    { 
   String[] nomCol = {"Code client","Ean13","Titre","Quantité"};
   
   Object[][] data ={
       {new Integer(001),new Long(1234),"Asterix",new Float(10)}
   };
   
   new PdtCmde("Tableau",nomCol,data);
    }
} 
A voir également:

2 réponses

Personne pour m'aider?
0
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
12 mai 2005 à 11:30
je connais pas trop java, mais pour ce pb il te faudra créer deux codes séparés, l'un pour l'ecran et l'autre pour l'imprimante
0