gpt4 book ai didi

java - 将面板安装在纸上

转载 作者:行者123 更新时间:2023-12-01 09:34:59 24 4
gpt4 key购买 nike

所以我有 1 个面板中的 2 个面板。第一个面板上是图表,第二个面板上是一些信息。我想打印包含那两个面板的面板。所以我使用了一些技巧让面板适合纸张,但它并没有完全发挥作用。这是我的打印作业:

public void printComponenet(Component comp){

PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName(" Print Component ");
PageFormat pf = pj.defaultPage();
pf.setOrientation(PageFormat.LANDSCAPE);

pj.setPrintable (new Printable() {
public int print(Graphics g, PageFormat pf, int pageNum){

if(pageNum > 0)
{
return Printable.NO_SUCH_PAGE;
}

Dimension compSize = comp.getPreferredSize();
comp.setSize(compSize);

Dimension printSize = new Dimension();
printSize.setSize(pf.getImageableWidth(), pf.getImageableHeight());

double scaleFactor = getScaleFactorToFit(compSize, printSize);

if(scaleFactor > 1d)
{
scaleFactor = 1d;
}

double scaleWidth = compSize.width * scaleFactor;
double scaleHeight = compSize.height * scaleFactor;

Graphics2D g2 = (Graphics2D) g.create();

double x = ((pf.getImageableWidth() - scaleWidth) / 2d) + pf.getImageableX();
double y = ((pf.getImageableHeight() - scaleHeight) / 2d) + pf.getImageableY();

AffineTransform at = new AffineTransform();
at.translate(x, y);
at.scale(scaleFactor, scaleFactor);
g2.transform(at);
comp.printAll(g2);
g2.dispose();

comp.revalidate();
return Printable.PAGE_EXISTS;
}
}, pf);
if (pj.printDialog() == false)
return;

try {
pj.print();
} catch (PrinterException ex) {
// handle exception
}
}

当我打印该面板时,它看起来像这样。 Here

我该如何解决这个问题?纸的底面还好,只是我没有完整截图。

最佳答案

而不是缩放渲染的图形,这只会变得更糟resampling工件,重写封闭 ComponentgetPreferredSize() 方法并指定所需的大小。使用诸如 FlowLayout 之类的布局来防止调整大小。由于您似乎正在使用JFreeChart,因此可以找到相关示例herehere .

关于java - 将面板安装在纸上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39066391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com