//这是我找到的一个打印预览的类,不知有用否。
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.print.*;
import javax.swing.JComponent;
public class PrintPreview extends JComponent {    public static int PAGE_RESOLUTION = 72;
    Pageable pageable;
    int currentPage;
    BufferedImage image;    public PrintPreview(Pageable pageable) {
        this.pageable = pageable;
        currentPage = 0;
        indexUpdated();
    }    public int getCurrentPage() {
        return currentPage;
    }    public int getNumberOfPages() {
        return pageable.getNumberOfPages();
    }    public Dimension getPreferredSize() {
        Dimension pageSize = new Dimension((int)((double)PAGE_RESOLUTION * 8.5D), PAGE_RESOLUTION * 11);
        PageFormat format = pageable.getPageFormat(currentPage);
        if(format.getOrientation() == 0) {
            int t = pageSize.width;
            pageSize.width = pageSize.height;
            pageSize.height = t;
        }
        return pageSize;
    }    public void indexUpdated() {
        Dimension size = new Dimension((int)((double)PAGE_RESOLUTION * 8.5D), PAGE_RESOLUTION * 11);
        PageFormat format = pageable.getPageFormat(currentPage);
        Printable printable = pageable.getPrintable(currentPage);
        Paper paper = new Paper();
        if(format.getOrientation() == 0) {
            int t = size.width;
            size.width = size.height;
            size.height = t;
        }
        paper.setImageableArea(0.0D, 0.0D, size.width, size.height);
        paper.setSize(size.width, size.height);
        PageFormat pf = (PageFormat)format.clone();
        if(image == null || image.getWidth() != size.width || image.getHeight() != size.height)
            image = new BufferedImage(size.width, size.height, 1);
        java.awt.Graphics2D g2D = image.createGraphics();
        g2D.setColor(Color.white);
        g2D.fillRect(0, 0, size.width, size.height);
        g2D.setColor(Color.lightGray);
        g2D.drawRect((int)pf.getImageableX(), (int)pf.getImageableY(), (int)pf.getImageableWidth(), (int)pf.getImageableHeight());
        g2D.setColor(Color.black);
        g2D.setClip((int)pf.getImageableX(), (int)pf.getImageableY(), (int)pf.getImageableWidth(), (int)pf.getImageableHeight());
        try {
            printable.print(g2D, pf, currentPage);
        }
        catch(Exception e) {
            e.printStackTrace();
            g2D.setColor(Color.red);
            g2D.drawLine(0, 0, size.width, size.height);
            g2D.drawLine(size.width, 0, 0, size.height);
        }
        g2D.finalize();
        image.flush();
        repaint();
    }    public void paint(Graphics g) {
        if(image == null)
            indexUpdated();
        Dimension size = getSize();
        g.drawImage(image, 0, 0, size.width, size.height, null);
    }    public void setCurrentPage(int index) {
        if(index >= 0 && index < pageable.getNumberOfPages()) {
            currentPage = index;
            indexUpdated();
            repaint();
        }
    }
}