我正在尝试打印应用程序中的JPanel,应用程序内的JPanel显示在下面(注意水平和垂直滚动条):
当应用程序运行时,面板的高度变得很长, 但是当我打印它时,它不会打印整个宽度和高度。
面板在纸张中的定位也与左侧而不是中心对齐。 下面的图片显示了面板在纸上的显示方式,这看起来非常糟糕,所以我需要帮助。
1)如何打印整个面板?
2)我如何将其定位在纸上集中?
这是我的代码:
public void printWork()
{
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName(" Opt De Solver Printing ");
pj.setPrintable(new Printable()
{
@Override
public int print(Graphics pg, PageFormat pf, int pageNum)
{
if(pageNum > 0)
return Printable.NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D)pg;
g2.translate(pf.getImageableX(), pf.getImageableY());
MainAppPanel.this.paintAll(g2);
/* I've tried the following commented codes but they don't work */
//MainAppPanel.this.printAll(g2);
//MainAppPanel.this.print(g2);
//MainAppPanel.this.print(g2);
return Printable.PAGE_EXISTS;
}
});
if(pj.printDialog() == false)
return;
try
{
pj.print();
}
catch(PrinterException xcp)
{
xcp.printStackTrace(System.err);
}
}
答案 0 :(得分:0)
我知道现在已经晚了3年但是参考:
将图像定位到您已定义到左上角的页面上: g2.translate(pf.getImageableX(),pf.getImageableY());
所以,如果你想得到100分右边的150分,那么你可以做到:
g2.translate(pf.getImageableX()+ 100,pf.getImageableY()+ 150);
此外,如果您想缩放图像以便更好地使用它:
g2.scale(1,1);
其中1表示100%,0.5表示50%,1.5表示150%