printpreviewcanvas.java

来自「业务信息管理平台,适用于企业内部信息管理,合同管理」· Java 代码 · 共 55 行

JAVA
55
字号
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.print.*;
import javax.swing.*;

public class printPreviewCanvas extends JPanel
{
    Book book;
    int CurrentPage=0;
    public printPreviewCanvas(Book b)
    {
        book=b;
    }
    public void paintComponent(Graphics g)
    {        
        super.paintComponent(g);
        Graphics2D g2=(Graphics2D)g;
        PageFormat pageFormat=book.getPageFormat(CurrentPage);
        double px=pageFormat.getWidth(),
               py=pageFormat.getHeight(),
               sx=getWidth()-1,
               sy=getHeight()-1,
               scale=sy/py,
               xoff=0.5*(sx-scale*px),
               yoff=0;        
        g2.translate((float)xoff,(float)yoff);
        g2.scale((float)scale,(float)scale);
        Rectangle2D page=new Rectangle2D.Double(0,0,px,py);
        g2.setPaint(Color.white);
        g2.fill(page);
        Printable printable=book.getPrintable(CurrentPage);
        try{
            printable.print(g2,pageFormat,CurrentPage);
        }catch(PrinterException eee)
        {
            g2.draw(new Line2D.Double (0,0,px,py));
            g2.draw(new Line2D.Double (0,px,0,py));
        }               
    }
    public int filpPage(int by)
    {
        int newPage=CurrentPage+by;
        if (0<=newPage&&newPage<book.getNumberOfPages())
        {
            CurrentPage=newPage;
            repaint();
        }        
        return CurrentPage;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?