Titeuf
-
11 mai 2005 à 19:38
sam3000
Messages postés1225Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention13 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);
}
}