java不能弹出打印窗口,java – 如何打印一个摆动窗口,使其非常适合一页

我正在尝试为我们的swing UI添加打印功能.我尝试了以下方法:

protected void print() {

PrinterJob job = PrinterJob.getPrinterJob();

if(job.printDialog()){

try {

job.setPrintable(new Printable() {

@Override

public int print(Graphics graphics,PageFormat pageFormat,int pageIndex) throws PrinterException {

if(pageIndex == 0){

Graphics2D g2d = (Graphics2D)graphics;

g2d.translate(pageFormat.getImageableX(),pageFormat.getImageableY());

// BufferedImage snapshot = AnimUtilities.createSnapshotOfFrame(ApplicationFrame.this,Transparency.TRANSLUCENT);

// double scaleX = pageFormat.getWidth()/snapshot.getWidth();

// double scaleY = pageFormat.getHeight()/snapshot.getHeight();

//

// double scaleValue = Math.min(scaleX,scaleY);

// g2d.scale(scaleValue,scaleValue);

// g2d.drawImage(snapshot,snapshot.getWidth(),snapshot.getHeight(),ApplicationFrame.this);

// ApplicationFrame.this.print(g2d);

ApplicationFrame.this.printAll(g2d);

return PAGE_EXISTS;

}

return NO_SUCH_PAGE;

}

});

job.print();

} catch (PrinterException e) {

e.printStackTrace();

}

} else {

System.err.println("Error printing");

}

}

没有注释掉的代码非常适用于打印的内容在纸上看起来非常好看.但是,JFrame比纸张大,所以它只是将其切断.我还尝试了注释掉的代码,该代码创建了JFrame的图像,适当地缩放图像以使其适合页面并保持相同的宽高比,但缩放使得屏幕上的文本看起来很糟糕.我发现这个advanced tutorial from Oracle,但它告诉我如何将屏幕分成多个页面.我只想打印JFrame的漂亮截图.如何打印JFrame而不切断它或导致工件缩放?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值