//Source file: c:\\集益班列\\wxy\\jy\\cn\\net\\plt\\util\\PLTPrintApplet.javapackage cn.net.plt.util;import java.applet.Applet;
import java.awt.print.Printable;
import java.awt.print.PrinterJob;
import java.awt.print.Paper;
import java.awt.print.PageFormat;
import java.awt.Graphics;
import java.awt.print.PrinterException;
import java.util.Enumeration;
import java.awt.Graphics2D;
import javax.swing.*;
import java.awt.event.*;
import java.net.*;/**
* PLT打印控制类
* @author 吴学友
* @version 1.0
*/
public class PLTPrintApplet extends Applet implements Printable
{ /**
* 左边距
*/
private double lMargin; /**
* 右边距
*/
private double rMargin; /**
* 上边距
*/
private double tMargin; /**
* 下边距
*/
private double bMargin; /**
* 用户自定义的打印格式
*/
private PageFormat aPageFormat; /**
* 用户是否重新设置了页边距
*/
private boolean marginReset; /**
* 用户是否设置了打印时的横纵向
*/
private boolean directionReset; /**
* 打印实体s
*/
private PLTPrintContentsEO contentLink;
private JButton jButtonPrint = new JButton();
private JButton jButtonSetContent = new JButton();
private JButton jButtonMargin = new JButton();
private JButton jButtonOrientation = new JButton(); public PLTPrintApplet()
{
this.lMargin=0;
this.rMargin=0;
this.tMargin=0;
this.bMargin=0;
this.aPageFormat=null;
this.marginReset=false;
this.directionReset=false;
this.contentLink=null;
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
} } /**
* Access method for the contentLink property.
*
* @return the current value of the contentLink property
*/
public PLTPrintContentsEO getContentLink()
{
return contentLink;
} /**
* Sets the value of the contentLink property.
*
* @param aContentLink the new value of the contentLink property
*/
public void setContentLink(PLTPrintContentsEO aContentLink)
{
contentLink = aContentLink;
} /**
* 打印setContents中设置的内容
*/
public void printContent()
{
//tell whether there exists sth 2 print
//if(this.contentLink==null)
// return; try
{
java.awt.print.PrinterJob job =PrinterJob.getPrinterJob();
PageFormat pf; //whether PageFormat is customed set or not
pf=job.defaultPage();
if(this.marginReset)
{
Paper paper=new Paper();
double xRatio=pf.getWidth()/21;
double yRatio=pf.getHeight()/29.7;
paper.setImageableArea(this.lMargin*xRatio,
this.rMargin*yRatio,
pf.getWidth()-this.rMargin*xRatio-this.lMargin*xRatio,
pf.getHeight()-this.bMargin*yRatio-this.tMargin*yRatio);
pf.setPaper(paper);
this.marginReset=false;
} //whether orientation is reset or not
if(this.directionReset)
{
pf.setOrientation(this.aPageFormat.getOrientation());
this.directionReset=false;
} //pf.setPaper(this.aPageFormat.getPaper());
job.setPrintable(this,pf); if(job.printDialog())
{
job.print();
}
}
catch(Exception e)
{
e.printStackTrace();
}
} /**
* @param graphics
* @param pageFormat
* @param pageIndex
* @return int
* @throws java.awt.print.PrinterException
*/
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException
{
if(pageIndex>=1) return Printable.NO_SUCH_PAGE;
Graphics2D g2=(Graphics2D)graphics; g2.translate(pageFormat.getImageableX(),pageFormat.getImageableY()); //get printer capabilities by dot
double xPrinter=pageFormat.getWidth();
double yPrinter=pageFormat.getHeight(); double xRatio=xPrinter/21; //21 is the width of the paper
double yRatio=yPrinter/29.7;//29.7 is the height of the paper
// Enumeration contentEnum=this.contentLink.getContentList().elements();
// while(contentEnum.hasMoreElements())
// {
// PLTPrintContentEO aPrintContent=(PLTPrintContentEO)contentEnum.nextElement();
// g2.drawString(aPrintContent.getContent(),(int)(aPrintContent.getXPosition()*xRatio),(int)(aPrintContent.getYPosition()*yRatio));
// }
g2.drawString("whatya",(int)(3*xRatio),(int)(3*yRatio)); for(int i=0;i<500;i++)
g2.drawLine(0,0,i,0);
for(int j=0;j<500;j++)
g2.drawLine(0,0,0,j); return Printable.PAGE_EXISTS;
} /**
* 设置页边距
* @param left - 左边距
* @param right - 右边距
* @param top - 上边距
* @param bottom - 上边距
*/
public void setMargin(double left, double right, double top, double bottom)
{
this.lMargin=left;
this.rMargin=right;
this.tMargin=top;
this.bMargin=bottom;
this.marginReset=true;
} /**
* 设置横纵向
* @param orient - 横纵向
*/
public void setOrientation(int orient)
{
this.aPageFormat.setOrientation(orient);
this.directionReset=true;
}
private void jbInit() throws Exception
{
/*UIManager.put("Label.font",new Font("宋体"));
UIManager.put("Button.font",new Font("...."));
UIManager.put("Menu.font",new Font("...."));
UIManager.put("MenuItem.font",new Font("...."));*/
jButtonPrint.setText("打印");
jButtonPrint.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jButtonPrint_actionPerformed(e);
}
});
jButtonSetContent.setText("设置打印内容");
jButtonSetContent.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jButtonSetContent_actionPerformed(e);
}
});
jButtonMargin.setText("设置页边距");
jButtonMargin.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jButtonMargin_actionPerformed(e);
}
});
jButtonOrientation.setText("设置横纵向");
jButtonOrientation.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jButtonOrientation_actionPerformed(e);
}
});
this.add(jButtonPrint, null);
this.add(jButtonSetContent, null);
this.add(jButtonMargin, null);
this.add(jButtonOrientation, null);
} void jButtonPrint_actionPerformed(ActionEvent e)
{
this.printContent();
} void jButtonSetContent_actionPerformed(ActionEvent e)
{
// this.setContentLink();
} void jButtonMargin_actionPerformed(ActionEvent e)
{
this.setOrientation(1);
} void jButtonOrientation_actionPerformed(ActionEvent e)
{
this.setMargin(3,3,3,3);
}
}
这个例子实现了套打,在左3厘米,上3厘米处输出一个字符串
import java.awt.print.Printable;
import java.awt.print.PrinterJob;
import java.awt.print.Paper;
import java.awt.print.PageFormat;
import java.awt.Graphics;
import java.awt.print.PrinterException;
import java.util.Enumeration;
import java.awt.Graphics2D;
import javax.swing.*;
import java.awt.event.*;
import java.net.*;/**
* PLT打印控制类
* @author 吴学友
* @version 1.0
*/
public class PLTPrintApplet extends Applet implements Printable
{ /**
* 左边距
*/
private double lMargin; /**
* 右边距
*/
private double rMargin; /**
* 上边距
*/
private double tMargin; /**
* 下边距
*/
private double bMargin; /**
* 用户自定义的打印格式
*/
private PageFormat aPageFormat; /**
* 用户是否重新设置了页边距
*/
private boolean marginReset; /**
* 用户是否设置了打印时的横纵向
*/
private boolean directionReset; /**
* 打印实体s
*/
private PLTPrintContentsEO contentLink;
private JButton jButtonPrint = new JButton();
private JButton jButtonSetContent = new JButton();
private JButton jButtonMargin = new JButton();
private JButton jButtonOrientation = new JButton(); public PLTPrintApplet()
{
this.lMargin=0;
this.rMargin=0;
this.tMargin=0;
this.bMargin=0;
this.aPageFormat=null;
this.marginReset=false;
this.directionReset=false;
this.contentLink=null;
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
} } /**
* Access method for the contentLink property.
*
* @return the current value of the contentLink property
*/
public PLTPrintContentsEO getContentLink()
{
return contentLink;
} /**
* Sets the value of the contentLink property.
*
* @param aContentLink the new value of the contentLink property
*/
public void setContentLink(PLTPrintContentsEO aContentLink)
{
contentLink = aContentLink;
} /**
* 打印setContents中设置的内容
*/
public void printContent()
{
//tell whether there exists sth 2 print
//if(this.contentLink==null)
// return; try
{
java.awt.print.PrinterJob job =PrinterJob.getPrinterJob();
PageFormat pf; //whether PageFormat is customed set or not
pf=job.defaultPage();
if(this.marginReset)
{
Paper paper=new Paper();
double xRatio=pf.getWidth()/21;
double yRatio=pf.getHeight()/29.7;
paper.setImageableArea(this.lMargin*xRatio,
this.rMargin*yRatio,
pf.getWidth()-this.rMargin*xRatio-this.lMargin*xRatio,
pf.getHeight()-this.bMargin*yRatio-this.tMargin*yRatio);
pf.setPaper(paper);
this.marginReset=false;
} //whether orientation is reset or not
if(this.directionReset)
{
pf.setOrientation(this.aPageFormat.getOrientation());
this.directionReset=false;
} //pf.setPaper(this.aPageFormat.getPaper());
job.setPrintable(this,pf); if(job.printDialog())
{
job.print();
}
}
catch(Exception e)
{
e.printStackTrace();
}
} /**
* @param graphics
* @param pageFormat
* @param pageIndex
* @return int
* @throws java.awt.print.PrinterException
*/
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException
{
if(pageIndex>=1) return Printable.NO_SUCH_PAGE;
Graphics2D g2=(Graphics2D)graphics; g2.translate(pageFormat.getImageableX(),pageFormat.getImageableY()); //get printer capabilities by dot
double xPrinter=pageFormat.getWidth();
double yPrinter=pageFormat.getHeight(); double xRatio=xPrinter/21; //21 is the width of the paper
double yRatio=yPrinter/29.7;//29.7 is the height of the paper
// Enumeration contentEnum=this.contentLink.getContentList().elements();
// while(contentEnum.hasMoreElements())
// {
// PLTPrintContentEO aPrintContent=(PLTPrintContentEO)contentEnum.nextElement();
// g2.drawString(aPrintContent.getContent(),(int)(aPrintContent.getXPosition()*xRatio),(int)(aPrintContent.getYPosition()*yRatio));
// }
g2.drawString("whatya",(int)(3*xRatio),(int)(3*yRatio)); for(int i=0;i<500;i++)
g2.drawLine(0,0,i,0);
for(int j=0;j<500;j++)
g2.drawLine(0,0,0,j); return Printable.PAGE_EXISTS;
} /**
* 设置页边距
* @param left - 左边距
* @param right - 右边距
* @param top - 上边距
* @param bottom - 上边距
*/
public void setMargin(double left, double right, double top, double bottom)
{
this.lMargin=left;
this.rMargin=right;
this.tMargin=top;
this.bMargin=bottom;
this.marginReset=true;
} /**
* 设置横纵向
* @param orient - 横纵向
*/
public void setOrientation(int orient)
{
this.aPageFormat.setOrientation(orient);
this.directionReset=true;
}
private void jbInit() throws Exception
{
/*UIManager.put("Label.font",new Font("宋体"));
UIManager.put("Button.font",new Font("...."));
UIManager.put("Menu.font",new Font("...."));
UIManager.put("MenuItem.font",new Font("...."));*/
jButtonPrint.setText("打印");
jButtonPrint.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jButtonPrint_actionPerformed(e);
}
});
jButtonSetContent.setText("设置打印内容");
jButtonSetContent.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jButtonSetContent_actionPerformed(e);
}
});
jButtonMargin.setText("设置页边距");
jButtonMargin.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jButtonMargin_actionPerformed(e);
}
});
jButtonOrientation.setText("设置横纵向");
jButtonOrientation.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jButtonOrientation_actionPerformed(e);
}
});
this.add(jButtonPrint, null);
this.add(jButtonSetContent, null);
this.add(jButtonMargin, null);
this.add(jButtonOrientation, null);
} void jButtonPrint_actionPerformed(ActionEvent e)
{
this.printContent();
} void jButtonSetContent_actionPerformed(ActionEvent e)
{
// this.setContentLink();
} void jButtonMargin_actionPerformed(ActionEvent e)
{
this.setOrientation(1);
} void jButtonOrientation_actionPerformed(ActionEvent e)
{
this.setMargin(3,3,3,3);
}
}
这个例子实现了套打,在左3厘米,上3厘米处输出一个字符串
解决方案 »
- 关于swt移植到linux的问题。。在线等。。谢谢
- java 如何监听JFrame的在标题栏的鼠标事件
- 怎么得到JComboBox中所选的值?急急!
- 怎样用UDP写点对点通信?
- 打jar包的问题~~~~~至急
- 请高手帮我考虑一个算法!
- 急救!在线等,谢谢了!
- 求助:有没有能查看磁盘空间和CPU使用率的JAVA类??
- 急聘Java GUI程序员(待遇从优)
- 令人头痛的问题:如何用getString()为空的方法判断数据库表中的字段已全部遍历
- 我照JBUILDER上的tutorials做的SESSION BEAN怎么会有错误?
- 在查看JBuilder7.0的帮助的时候老是出现下面的问题???????
姓名:chj 年龄:
性别:
是在每行都设置它的位置还是使用循环如果这些数据是不规则怎办?
姓名:chj 年龄:
性别:
是在每行都设置它的位置还是使用循环如果这些数据是不规则怎办?