加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 19:14:06 所属栏目:Java 来源:网络整理
导读:我正在尝试为我们的swing UI添加打印功能.我尝试了以下方法: protected void print() { PrinterJob job = PrinterJob.getPrinterJob(); if(job.printDialog()){ try { job.setPrintable(new Printable() { @Override public int print(Graphics graphics,Pa

我正在尝试为我们的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而不切断它或导致工件缩放?

最佳答案
你可以从RenderingHints获得一些好处.我会特别关注KEY_ANTIALIASING,KEY_TEXT_ANTIALIASING和KEY_FRACTIONALMETRICS.

编辑:

RenderingHints.KEY_INTERPOLATION也有帮助,AffineTransformOp.TYPE_BICUBIC是另一种选择.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读