JDK/DEMO/SWING-SET2/ 点击看看那个jar包看看 慢慢弄
里面的代码很详细

解决方案 »

  1.   

    http://java.sun.com/developer/onlineTraining/Programming/JDCBook/advprint.html
    这里看看吧!
      

  2.   

    import java.awt.print.*;
    import java.awt.*;
    import javax.print.*;
    import javax.print.attribute.*;
    import javax.swing.*;
    import javax.swing.table.*;
    class PrintReport implements Printable{
    private TableModel table;
    private String title;
    public PrintReport(JTable table,String title){
    this.table=table.getModel();
    this.title=title;
    PrintService[] services=PrintServiceLookup.lookupPrintServices(
    DocFlavor.SERVICE_FORMATTED.PRINTABLE,null
    );
    if(services.length<1) new ErrorDialog("No printer available!");
    else{
    PrintRequestAttributeSet attributes=new HashPrintRequestAttributeSet();
    PrintService service=ServiceUI.printDialog(null,50,50,services,services[0],null,attributes);
    if(service!=null){
    DocPrintJob job=service.createPrintJob();
    try{
    Doc doc=new SimpleDoc(this,DocFlavor.SERVICE_FORMATTED.PRINTABLE,null);
    job.print(doc,attributes);
    }catch(PrintException pe){
    pe.printStackTrace();
    }
    }
    }
    }
    public int print(Graphics g,PageFormat pf,int pageIndex){
    if(pageIndex==0){
    Graphics2D g2d=(Graphics2D)g;
    g2d.translate(pf.getImageableX(),pf.getImageableY()); 
    g2d.setColor(Color.black);
    g2d.drawString(title,0,20);
    for(int i=0;i<table.getColumnCount();i++){
    g2d.drawString(table.getColumnName(i),i*100,40);
    }
    for(int i=0;i<table.getRowCount();i++){
    for(int ii=0;ii<table.getColumnCount();ii++){
    String cell;
    Object original=table.getValueAt(i,ii);
    if(original==null) cell="";
    else cell=original.toString();
    g2d.drawString(cell,ii*100,60+i*20);
    }
    }
    return Printable.PAGE_EXISTS;
    }else return Printable.NO_SUCH_PAGE;
    }
    }