public static void main(String[] args) {
PrintSample ps = new PrintSample();
ps.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ps.pack();
ps.setVisible(true);
}
public PrintSample() {
super("Sample Print Application");
table = new JTable(new SampleTableModel());
table.setCellSelectionEnabled(false);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//setContentPane(new JScrollPane(table));
JScrollPane jsp = new JScrollPane(table) {
public void setColumnHeaderView(Component comp) {
super.setColumnHeaderView(new JButton("This is a JButton"));
}
};
setContentPane(jsp);
//pageFormat = new PageFormat();
buildMenuBar();
}
protected void buildMenuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("File");
menu.add(new AbstractAction("Print",
new ImageIcon("print.gif")) {
public void actionPerformed(ActionEvent event) {
onPrint();
}
});
menu.addSeparator();
menu.add(new AbstractAction("Exit",
new ImageIcon("empty.gif")) {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
menuBar.add(menu);
setJMenuBar(menuBar);
}
protected void onPrint() {
Thread t = new Thread(new Runnable() {
public void run() {
PrinterJob pj = PrinterJob.getPrinterJob();
Paper paper = new Paper();
//paper.setImageableArea(72, 144, 6.5
PageFormat pageFormat = new PageFormat();
pageFormat.setPaper(paper);
TablePrinter tp = new TablePrinter(table);
pj.setPrintable(tp, pageFormat);
public int print(Graphics g, PageFormat pf, int index) {
if (index == 0) {
g.translate((int)(pf.getImageableX()),
(int)(pf.getImageableY()));
/* Graphics2D g2d = (Graphics2D)g;
double pageWidth = pf.getImageableWidth();
double pageHeight = pf.getImageableHeight();
double tableWidth = table.getWidth();
double tableHeight = table.getHeight();
// Find out what scale factor should be applied
// to make the table's width small enough to
// fit on the page
double scaleX = pageWidth / tableWidth;
// Now do the same for the height
double scaleY = pageHeight / tableHeight;
// Pick the smaller of the two values so that
// the table is as large as possible while
// not exceeding either the page's width or
// its height
double scaleFactor = Math.min(scaleX, scaleY);
// Now set the scale factor
g2d.scale(scaleFactor, scaleFactor);
*/ table.paint(g);
return Printable.PAGE_EXISTS;
}
return Printable.NO_SUCH_PAGE;
}