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

📄 printactionwyjz.java

📁 随机生成35选7彩票码
💻 JAVA
字号:
package sjs;

import javax.swing.*;
import java.awt.print.*;
import java.awt.*;

public class PrintActionwyjz implements Printable{
  //JFrame frame;
  JTable tableView;
  String title;
  String date;
  public PrintActionwyjz(JTable table,String title1,String dateforthis) {
   tableView=table;
   title=title1;
   date=dateforthis;


   PrinterJob pj=PrinterJob.getPrinterJob();
   pj.setPrintable(PrintActionwyjz.this);
   pj.setJobName(title);

   if(pj.printDialog()==true)
   {
   try{
        pj.print();
      }catch (Exception PrintException) {
      JOptionPane.showMessageDialog(null,"打印失败");
      }
   }
  // frame.setVisible(false);
  }
 public int print(Graphics g, PageFormat pageFormat,
        int pageIndex) throws PrinterException {
     	Graphics2D  g2 = (Graphics2D) g;
      g2.setColor(Color.black);
     	int fontHeight=g2.getFontMetrics().getHeight();
     	int fontDesent=g2.getFontMetrics().getDescent();

     	//leave room for page number and the title
     	double pageHeight =
     	  pageFormat.getImageableHeight()-fontHeight*4;
     	double pageWidth =
     	  pageFormat.getImageableWidth();
     	double tableWidth = (double)
          tableView.getColumnModel(
          ).getTotalColumnWidth();
      double scale = 1;
     	if (tableWidth >= pageWidth) {
		      scale = pageWidth / tableWidth;
      	}

     	double headerHeightOnPage=
                 tableView.getTableHeader(
                 ).getHeight()*scale;
     	double tableWidthOnPage=tableWidth*scale;

     	double oneRowHeight=(tableView.getRowHeight()+
                      tableView.getRowMargin())*scale;
     	int numRowsOnAPage=
              (int)((pageHeight-headerHeightOnPage)/
                                  oneRowHeight);
     	double pageHeightForTable=oneRowHeight*
     	                            numRowsOnAPage;
     	int totalNumPages=
     	      (int)Math.ceil((
                (double)tableView.getRowCount())/
                                    numRowsOnAPage);
     	if(pageIndex>=totalNumPages) {
                      return NO_SUCH_PAGE;
     	}

     	g2.translate(pageFormat.getImageableX(),
                       pageFormat.getImageableY());
//title center
     g2.drawString(title,
     	    (int)pageWidth/4, (int)(fontHeight-fontDesent));
//bottom center
     	g2.drawString("Page: "+(pageIndex+1),
     	    (int)pageWidth/2-35, (int)(pageHeight
     	    +fontHeight*4-fontDesent));

     	g2.translate(0f,headerHeightOnPage+fontHeight*2);
     	g2.translate(0f,-pageIndex*pageHeightForTable);

     	//If this piece of the table is smaller
     	//than the size available,
     	//clip to the appropriate bounds.
     	if (pageIndex + 1 == totalNumPages) {
           int lastRowPrinted =
                 numRowsOnAPage * pageIndex;
           int numRowsLeft =
                 tableView.getRowCount()
                 - lastRowPrinted;
           g2.setClip(0,
             (int)(pageHeightForTable * pageIndex),
             (int) Math.ceil(tableWidthOnPage),
             (int) Math.ceil(oneRowHeight *
                               numRowsLeft));
     	}
     	//else clip to the entire area available.
     	else{
             g2.setClip(0,
             (int)(pageHeightForTable*pageIndex),
             (int) Math.ceil(tableWidthOnPage),
             (int) Math.ceil(pageHeightForTable));
     	}

     	g2.scale(scale,scale);
     	tableView.paint(g2);
     	g2.scale(1/scale,1/scale);


     	g2.translate(0f,pageIndex*pageHeightForTable);
     	g2.translate(0f,-headerHeightOnPage);
     	g2.setClip(0, 0,
     	  (int) Math.ceil(tableWidthOnPage),
          (int)Math.ceil(headerHeightOnPage));
     	g2.scale(scale,scale);
     	tableView.getTableHeader().paint(g2);
     	//paint header at top

     	return Printable.PAGE_EXISTS;
   }
}

⌨️ 快捷键说明

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