⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printer.java

📁 业务信息管理平台,适用于企业内部信息管理,合同管理
💻 JAVA
字号:
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.*;
import javax.swing.event.*;
import java.awt.print.Book.*;
import java.sql.*;

public class Printer extends JFrame implements ActionListener
{
    JDesktopPane JDesktop=new JDesktopPane();
    Vector objects=new Vector();
    JButton printBtt,pageSetupBtt,printPreviewBtt,nextBtt,preBtt;
    PageFormat pageFormat;    
    Font tabFont=new Font("MonoSpaced",Font.PLAIN,12);
    JLabel lblVisible;
    Label lblPageInfo;
    printPreviewCanvas canvas;    
    JScrollPane js;        
    int pageCount=0;
   
    public Printer(String orientation,double paperWidth,double paperHeight)
    {
    		super("信息打印"); 
        if (pageFormat==null)pageFormat=(PrinterJob.getPrinterJob()).defaultPage();      
        if (orientation.equals("H"))pageFormat.setOrientation(PageFormat.REVERSE_LANDSCAPE);
        else pageFormat.setOrientation(PageFormat.PORTRAIT);         
        Paper p=new Paper();
        p.setSize(paperWidth/2.54*80,paperHeight/2.54*80);
        p.setImageableArea(80,80,paperWidth/2.54*80-144,paperHeight/2.54*80-144);
        pageFormat.setPaper(p);        
        addComponent();
    }
  
    public Printer()
    {    
    	super("信息打印");     
        if (pageFormat==null)pageFormat=(PrinterJob.getPrinterJob()).defaultPage();      
        addComponent();
    }
    public void addComponent()
    {
       // putClientProperty("JInternalFrame.isPalette", Boolean.TRUE);        
        setSize(1010,750);        
        JDesktop.setLayout(null);
        Container c=getContentPane();
        c.add(JDesktop);
        //try{setMaximum(true);}catch(Exception e){}        
        
        JPanel bttPanel=new JPanel();
        bttPanel.setBorder(BorderFactory.createLineBorder(Color.black));
        /*pageSetupBtt=new JButton(" ",new ImageIcon("pagesetup.gif"));        
        printBtt=new JButton(" ",new ImageIcon("print.gif"));
        printPreviewBtt=new JButton(" ",new ImageIcon("preview.gif")); 
        cmdBig=new JButton(" ",new ImageIcon("zoomout.gif"));
        cmdSmall=new JButton(" ",new ImageIcon("zoomin.gif"));                 
        preBtt=new JButton(" ",new ImageIcon("pre.gif"));
        nextBtt=new JButton(" ",new ImageIcon("next.gif"));*/
        pageSetupBtt=new JButton("打印设置");        
        printBtt=new JButton("打印");
        printPreviewBtt=new JButton("查看打印内容"); 
        //cmdBig=new JButton("ZoomOut");
        //cmdSmall=new JButton("ZoomIn");                 
        preBtt=new JButton("上一页");
        nextBtt=new JButton("下一页");
        //cmdExit=new JButton("返回"); 
        
        lblVisible=new JLabel("");                        
        pageSetupBtt.setMnemonic('s');
        
        printBtt.setMnemonic('p');
       
        printPreviewBtt.setMnemonic('v');        
       
       //cmdBig.setMnemonic('=');        
             
        //cmdSmall.setMnemonic('-');
    
        preBtt.setMnemonic(',');
       
        nextBtt.setMnemonic('.');
                  
        //cmdExit.setMnemonic('x');            
        lblPageInfo=new Label("页/码"); 
        
        bttPanel.add(lblPageInfo);        
        bttPanel.add(pageSetupBtt);        
        bttPanel.add(printPreviewBtt);        
        //bttPanel.add(cmdBig);
        //bttPanel.add(cmdSmall);  
        bttPanel.add(preBtt);        
        bttPanel.add(nextBtt);        
        bttPanel.add(printBtt);
        //bttPanel.add(cmdExit);                
        JDesktop.add(lblVisible);
        JDesktop.add(bttPanel);        
        lblVisible.setBounds(0,0,0,0);        
        
        JMenuBar menubar=new JMenuBar();
        setJMenuBar(menubar);
        menubar.add(bttPanel);       
        
        //cmdBig.addActionListener(this);
        //cmdSmall.addActionListener(this);
        printPreviewBtt.addActionListener(this);
        pageSetupBtt.addActionListener(this);        
        printBtt.addActionListener(this);    
        //cmdExit.addActionListener(this);
        preBtt.addActionListener(this); 
        nextBtt.addActionListener(this);           
        bttEnable(false);  
        
        
        this.addWindowListener(new WindowAdapter(){
        public void WindowClosing(WindowEvent e){
            System.exit(0);     
               }
           });   
           
        
    }
    public void printGroup(String strSQL,
                            int FieldMaxLength[],String FieldName[],
                            String FieldLabel[],Font font)
    {
        println();
        int currentTab=0;
        for(int i=0;i<FieldLabel.length;i++)
        {
            tab(currentTab);
            print(FieldLabel[i],font);  
            currentTab=currentTab+FieldMaxLength[i]/2+5;
        }
        println();
        printLine(1000);
        println();
        try{
        	
        	
        	Class.forName(Yewu.forName);
   			Connection	con1=DriverManager.getConnection(Yewu.jdbc);
 
            //Class.forName(Yewu.forName);
            //Connection con1=DriverManager.getConnection("jdbc:odbc:"+db,uid,pwd);
            Statement stmt=con1.createStatement();
            ResultSet rs=stmt.executeQuery(strSQL);
            int to=1;
            while (rs.next())
            { 
                currentTab=0;
                tab(currentTab);
                print(""+to++,font);
                currentTab=6;
                
                
                for(int i=0;i<FieldName.length;i++)
                {         
                    String str=rs.getString(FieldName[i]);
                    if (str==null)str="";                                
                    tab(currentTab);
                    print(str,font);
                    currentTab=currentTab+FieldMaxLength[i+1]/2+5;
                }
                println();
            }
            stmt.close();
           con1.close();
            
        }catch(Exception e){System.out.print(e.getMessage());}
    }    
    public void bttEnable(boolean b)
    {
        //cmdSmall.setEnabled(b);
        //cmdBig.setEnabled(b);
        preBtt.setEnabled(b);
        nextBtt.setEnabled(b);        
        printPreviewBtt.setEnabled(!b);        
    }
    public Book makeBook(String act)
    {
        Book book=new Book();        
        drawOut drawout=new drawOut(objects,act);        
        pageCount=drawout.getPageCount((Graphics2D)lblVisible.getGraphics(),pageFormat);
        if (pageCount<=1){nextBtt.setEnabled(false);preBtt.setEnabled(false);}
        book.append(drawout,pageFormat,pageCount);
        return book;
    }  
    public void actionPerformed(ActionEvent event)
    { 
        Object obj=event.getSource();
        //if (obj==cmdExit){dispose();}
        if (obj==printBtt)
        {
            PrinterJob printJob=PrinterJob.getPrinterJob();
            printJob.setPageable(makeBook("print"));            
            if (printJob.printDialog()){try{printJob.print();}catch(Exception ee){}}
        }
        else if(obj==pageSetupBtt)
        {           
           PrinterJob printJob=PrinterJob.getPrinterJob();
            if(pageFormat==null)pageFormat=printJob.defaultPage();            
            pageFormat=printJob.pageDialog(pageFormat);
            try{
                JDesktop.remove(js);
                if (!printPreviewBtt.isEnabled())
                {  
                    JDesktop.repaint();                
                    showCanvas();                                      
                }
            }catch(Exception e){}      
        }
        else if (obj==nextBtt){
            preBtt.setEnabled(true);
            int currentPage=canvas.filpPage(1)+1;
            if (currentPage==pageCount)nextBtt.setEnabled(false);
            lblPageInfo.setText(currentPage+" of "+pageCount);
        }
        else if (obj==preBtt){
            nextBtt.setEnabled(true);
            int currentPage=canvas.filpPage(-1)+1;
            if (currentPage==1){preBtt.setEnabled(false);nextBtt.requestFocus();}
            lblPageInfo.setText(currentPage+" of "+pageCount);
        }
        else if (obj==printPreviewBtt)showCanvas();
        //else if (obj==cmdBig)canvasResize(10);
        //else if (obj==cmdSmall)canvasResize(-10);
    }
    
    public void canvasResize(int i)
    {
        try{     
           
            int h=canvas.getHeight()*(100+i)/100;
            
            int w=canvas.getWidth()*(100+i)/100;
            	
            if (h!=0&&w!=0)canvas.setSize(w,h);         
        }catch(Exception ee){
        	System.out.println(ee);
        	}
    }
   
   
    public void showCanvas()
    {
        bttEnable(true);preBtt.setEnabled(false);
        canvas=new printPreviewCanvas(makeBook("Preview"));                
        js=new JScrollPane(canvas,22,32);
        js.setBounds(0,0,1000,720);                
        JDesktop.add(js);
        JDesktop.repaint();
        lblPageInfo.setText("1 of "+pageCount);        
    }
    /*--------------------------------------------------*/
    public void printLine(int len)
    {
        objects.addElement(new printLine(len));
    }
    public void print(String s,Font font)
    {
        objects.addElement(new printString(s,font));
    }
    public void println(String s,Font font)
    {
        print(s,font);
        objects.addElement(new newLine());
    }
    public void println()
    {
        objects.addElement(new newLine());
    }
    public void tab(int tabstop)
    {
        objects.addElement(new printTab(tabFont,tabstop));
    }
}
abstract class printerObject
{
    abstract void draw(Graphics g,Point p);
}
class newLine extends printerObject
{
    public void draw(Graphics g,Point p)
    {
            p.x=0;
            p.y+=g.getFontMetrics(g.getFont()).getHeight();
    }
}
class printLine extends printerObject
{
    int iLen;
    public  printLine(int len)
    {
        iLen=len;
    }
    public void draw(Graphics g,Point p)
    {
        Font f=new Font("MonoSpaced",Font.PLAIN,1);
        Font oldFont=g.getFont();
        g.setFont(f);
        g.drawLine(p.x,p.y,p.x+iLen,p.y);
        p.x+=p.x+iLen;
        g.setFont(oldFont);
    }
}
class printString extends printerObject
{
    String st;
    Font newFont;
    public printString (String s,Font font)
    {
        st=s;
        newFont=font;
    }
    public void draw(Graphics g, Point p)
    {
        Font oldFont=g.getFont();
        g.setFont(newFont);
        g.drawString(st,p.x,p.y);
        p.x+=g.getFontMetrics(g.getFont()).stringWidth(st);
        g.setFont(oldFont);
    }  
}
class printTab extends printerObject
{
    static int tab_width=0;
    int tab_dist;
    Font tabFnt;
    public printTab(Font tbFont,int tabdist)
    {
        tabFnt=tbFont;
        tab_dist=tabdist;
    }
    public void draw(Graphics g,Point p)
    {
        if(tab_width==0)  tab_width=g.getFontMetrics(tabFnt).stringWidth("W");
        if(p.x<(tab_dist*tab_width)) p.x=tab_dist*tab_width;
    }
}

⌨️ 快捷键说明

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