java如何实现打印功能?

Python016

java如何实现打印功能?,第1张

Print.java--打印内容定义

[code]

import java.awt.*

import java.awt.event.*

import java.awt.print.*

import java.awt.image.*

import javax.swing.*

import javax.swing.event.*

import javax.swing.border.*

import javax.swing.event.*

import java.util.*

import java.io.*

public class Print implements Printable{

int m_wPage

int m_hPage

int m_orientation

Printable m_target

int maxNumPage=1

String title="数据表格打印"

Font titleFont=new Font("黑体",Font.BOLD,14)

boolean hasTail=true

int tailAlign=0

int headAlign=0

int topSpace=0

int leftSpace=0

int yStart=0

int yEnd=0

int xStart=topSpace

int xEnd=0

int x=0,y=0

String strTemp="打印内容"

public void doPrint(){

try{

m_orientation=PageFormat.PORTRAIT

//设置打印对象,默认纸张

PrinterJob prnJob=PrinterJob.getPrinterJob()

PageFormat pageFormat=prnJob.defaultPage()

pageFormat.setOrientation(m_orientation)

m_wPage=(int)(pageFormat.getWidth())

m_hPage=(int)(pageFormat.getHeight())

//将待打印的窗体根据默认纸张设置传入打印对象

prnJob.setPrintable(this,pageFormat)

if(!prnJob.printDialog()) return

prnJob.print()

}catch(PrinterException ex){

ex.printStackTrace()

System.err.println("打印错误:"+ex.toString())

}

}

/**

* 初始化打印参数

*/

public void initPrintParameter()

{

}

/**

*构造打印内容,以送打印机打印

*/

public int print(Graphics pg,PageFormat pageFormat,

int pageIndex) throws PrinterException{

//初始化打印参数

initPrintParameter()

//将画布设置为页面大小

pg.translate((int)pageFormat.getImageableX(),

(int)pageFormat.getImageableY())

int wPage=0

int hPage=0

//根据打印机页面设置调整画布大小

if(pageFormat.getOrientation()==pageFormat.PORTRAIT){

wPage=(int)pageFormat.getImageableWidth()

hPage=(int)pageFormat.getImageableHeight()

}

else{

wPage=(int)pageFormat.getImageableWidth()

wPage+=wPage/2

hPage=(int)pageFormat.getImageableHeight()

pg.setClip(0,0,wPage,hPage)

}

wPage=wPage-2*leftSpace

hPage=hPage-2*topSpace

xStart=leftSpace

xEnd=wPage-2

//为画布设置颜色和字体

int y=topSpace

pg.setFont(titleFont)

pg.setColor(Color.black)

//画标题,并使其居中

Font fn=pg.getFont()

FontMetrics fm=pg.getFontMetrics()

y+=fm.getAscent()

alignText(title,pg,y,xStart,xEnd,headAlign)

y+=30

x=leftSpace+2

Font headerFont=new Font("宋体",Font.BOLD,14)

pg.setFont(headerFont)

fm=pg.getFontMetrics()

int h=fm.getAscent()

yStart=y-1

y+=h

pg.setFont(headerFont)

fm=pg.getFontMetrics()

int header=y

h=fm.getHeight()

//计算行高,每页行数,总行数和指定页码的起始行、结束行

int rowH=Math.max(h,10)

int tailH=rowH+30

int rowPerPage=0

int leftPix=0

if(hasTail){

rowPerPage=(hPage-header-tailH)/rowH

leftPix=(hPage-header-tailH)%rowH

yEnd=hPage-leftPix-tailH+2

}

else{

rowPerPage=(hPage-header)/rowH

leftPix=(hPage-header)%rowH

yEnd=hPage-leftPix+2

}

pg.drawString(strTemp,x,y)

//画表格边框

pg.drawLine(xStart,yStart,xStart,yEnd)

pg.drawLine(xStart,yStart,xEnd,yStart)

pg.drawLine(xEnd,yStart,xEnd,yEnd)

pg.drawLine(xStart,yEnd,xEnd,yEnd)

//打印页码

if(hasTail){

int pageNumber=pageIndex+1

String s="第"+pageNumber+"页"

alignText(s,pg,yEnd+30,xStart,xEnd,tailAlign)

}

System.gc()

return PAGE_EXISTS

}

/**

* 文字排列,坐标在y处,显示范围(start-end)

* 0表示居中显示,1表示左对齐,2表示右对齐

*/

private void alignText(String s,Graphics pg,int y,int start,

int end,int mode){

Font fn=pg.getFont()

FontMetrics fm=pg.getFontMetrics()

int wString=fm.stringWidth(s)

int x=start

switch(mode)

{

case 0:

if((end-start-wString)>0) x=start+(end-start-wString)/2

break

case 1:

break

case 2:

if((end-start-wString)>0) x=start+(end-start-wString)

break

}

pg.drawString(s,x,y)

}

public static void main(String[] args){

Print p=new Print()

p.doPrint()

}

}

[code]

运行方法:

>javac -d . Print.java

>java Print

自己运行一下

Java 程序来打印类的对象

在本教程中,我们将学习如何用Java打印类的对象。

要理解此示例,您应该了解以下Java编程主题:

示例1:Java程序来打印对象

示例class Test {

}

class Main {

public static void main(String[] args) {

// 创建Test类的对象

Test obj = new Test()

//打印对象

System.out.println(obj)

}

}

输出结果Test@512ddf17

在上面的示例中,我们创建了Test类的对象。当我们打印对象时,我们可以看到输出看起来不同。

这是因为在打印对象时,将调用对象类的toString()方法。它以默认格式格式化对象。如下所示:Test - 类名称

@ - 连接字符串

512ddf17 -对象的散列值

如果要用自己的方式格式化输出,则需要重写类中的toString()方法。例如,

示例class Test {

@Override

public String toString() {

return "object"

}

}

class Main {

public static void main(String[] args) {

//创建Test类的对象

Test obj = new Test()

// 打印对象

System.out.println(obj)

}

}