Imprimer en Paysage une table JTABLE avec le code ci-joint, qui fait deja du res
icarusomega
Messages postés6Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention 8 août 2004
-
29 juil. 2004 à 21:00
icarusomega
Messages postés6Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention 8 août 2004
-
8 août 2004 à 04:07
Salut,
J ai bossé pas mal de temps pour essayer de modifier l impression en format paysage mais je n y arrive pas, je vous passerai mes modifs de guerrier mais ca ne veut pas !!
C'est une question de 3 lignes mais bon...
Un petit peu d'aide serait le bien venu
public class Report implements Printable {
JFrame frame;
JTable tableView;
public Report() {
frame = new JFrame("Rapport des ventes");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
final String[] headers = {"Description", "prix d'ouverture",
"dernier prix", "Date de fin", "Quantité"};
final Object[][] data = {
{"Box of Biros", "1.00", "4.99", new Date(), new Integer(2)},
{"Blue Biro", "0.10", "0.14", new Date(), new Integer(1)},
{"legal pad", "1.00", "2.49", new Date(), new Integer(1)},
{"tape", "1.00", "1.49", new Date(), new Integer(1)},
{"stapler", "4.00", "4.49", new Date(), new Integer(1)},
{"legal pad", "1.00", "2.29", new Date(), new Integer(5)}
};
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() {
return headers.length;
}
public int getRowCount() {
return data.length;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public String getColumnName(int column) {
return headers[column];
}
public Class getColumnClass(int col) {
return getValueAt(0, col).getClass();
}
public boolean isCellEditable(int row, int col) {
return (col == 1);
}
public void setValueAt(Object aValue, int row, int column) {
data[row][column] = aValue;
}
};
tableView = new JTable(dataModel);
JScrollPane scrollPane = new JScrollPane(tableView);
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)
tableView.getColumnModel().getTotalColumnWidth();
double scale = 1;
// 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 = tableView.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);
tableView.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);
tableView.getTableHeader().paint(g2);
return Printable.PAGE_EXISTS;
}
public static void main(String[] args) {
new Report();
}
}
icarusomega
Messages postés6Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention 8 août 2004 30 juil. 2004 à 12:53
D'origine les impressions sont au format portrait mais je souhaite imprimer au format paysage si quelqu'un pouvait me dire comment faire ou me donner les lignes de code nécessaire.
icarusomega
Messages postés6Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention 8 août 2004 30 juil. 2004 à 15:39
Le problème est qu'il me dit que la méthode pagedefault requiere un int :
kernel/Candidature/NouveauKernel.java [1 239:1] cannot resolve symbol
symbol : method defaultPage (int)
location: class java.awt.print.PrinterJob
pj.defaultPage(PageFormat.LANDSCAPE);
^
mais ne faut il pas utiliser setorientable ?
Guillaume.
Vous n’avez pas trouvé la réponse que vous recherchez ?