我套用以下类,用作打印程序窗体,原在jdk1.5+fedora7(os)中正常,现换为jdk1.6+fedora8(os)中无法打印,请大家看看是什么问题!
http://www.cnblogs.com/ctfzh/archive/2007/07/09/811319.html
/*打印指定的窗体及其包含的组件*/
private void printFrameAction()
{
Toolkit kit = Toolkit.getDefaultToolkit(); //获取工具箱
Properties props = new Properties();
props.put("awt.print.printer", "durango");//设置打印属性
props.put("awt.print.numCopies", "2");
if(kit != null)
{
//获取工具箱自带的打印对象
PrintJob printJob = kit.getPrintJob(this, "Print Frame", props);
if(printJob != null)
{
Graphics pg = printJob.getGraphics();//获取打印对象的图形环境
if(pg != null)
{
try
{
this.printAll(pg);//打印该窗体及其所有的组件
}
finally
{
pg.dispose();//注销图形环境
}
}
printJob.end();//结束打印作业
}
}
}
http://www.cnblogs.com/ctfzh/archive/2007/07/09/811319.html
/*打印指定的窗体及其包含的组件*/
private void printFrameAction()
{
Toolkit kit = Toolkit.getDefaultToolkit(); //获取工具箱
Properties props = new Properties();
props.put("awt.print.printer", "durango");//设置打印属性
props.put("awt.print.numCopies", "2");
if(kit != null)
{
//获取工具箱自带的打印对象
PrintJob printJob = kit.getPrintJob(this, "Print Frame", props);
if(printJob != null)
{
Graphics pg = printJob.getGraphics();//获取打印对象的图形环境
if(pg != null)
{
try
{
this.printAll(pg);//打印该窗体及其所有的组件
}
finally
{
pg.dispose();//注销图形环境
}
}
printJob.end();//结束打印作业
}
}
}
我将以上举例修改为以下,
public class PrintClass {
/** Creates a new instance of PrintClass */
public PrintClass(JFrame jframe) {
Toolkit kit = Toolkit.getDefaultToolkit(); //获取工具箱
Properties props = new Properties();
props.put("awt.print.printer", "durango");//设置打印属性
props.put("awt.print.numCopies", "1");
if(kit != null)
{
//获取工具箱自带的打印对象
PrintJob printJob = kit.getPrintJob( jframe, "Print Frame", props);
if(printJob != null)
{
Graphics pg = printJob.getGraphics();//获取打印对象的图形环境
if(pg != null)
{
try
{
jframe.print(pg);//打印该窗体及其所有的组件
}
finally
{
pg.dispose();//注销图形环境
}
}
printJob.end();//结束打印作业
}
}
jframe.removeAll();
jframe.dispose();
}
}
PrintJob printJob = kit.getPrintJob( jframe, "Print Frame", props);