如何用Java打印整个JPanel
我试图打印应用程序中的JPanel,应用程序中的JPanel显示在下面(请注意水平和垂直滚动条): 当应用程序运行时,面板的高度会变得很长, 但当我打印它时,它不会打印整个宽度和高度 此外,纸张中面板的定位是向左对齐,而不是居中对齐。 下图显示了面板在纸上的显示方式,这看起来非常糟糕,因此请我需要帮助 1) 如何打印整个面板 2) 如何将其定位为集中在纸张上 这是我的密码:如何用Java打印整个JPanel,java,swing,graphics,printing,Java,Swing,Graphics,Printing,我试图打印应用程序中的JPanel,应用程序中的JPanel显示在下面(请注意水平和垂直滚动条): 当应用程序运行时,面板的高度会变得很长, 但当我打印它时,它不会打印整个宽度和高度 此外,纸张中面板的定位是向左对齐,而不是居中对齐。 下图显示了面板在纸上的显示方式,这看起来非常糟糕,因此请我需要帮助 1) 如何打印整个面板 2) 如何将其定位为集中在纸张上 这是我的密码: public void printWork() { PrinterJob pj = PrinterJob.ge
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);
}
}
我知道这已经晚了3年,但仅供参考: 您定义的页面上的图像在此处左上角的位置: g2.translate(pf.getImageableX(),pf.getImageableY()) 因此,如果你想让它向右100点,向下150点,那么你可以: g2.翻译(pf.getImageableX()+100,pf.getImageableY()+150) 此外,如果要缩放图像以使其更适合,请使用: g2.量表(1,1)
其中1表示100%,因此0.5表示50%,1.5表示150%请看一看,并了解更改“活动”组件的位置和大小可能会影响其在屏幕上的绘制方式。请给我一些时间来使用您给我的示例,我会回来回复,谢谢@疯狂程序员