我正在为朋友的公司制作一个程序,我需要打印JFrame
一堆JLabel
和其他东西。直到这里没问题。
当我打印JFrame
时,我有一些JLabel因为某些未知原因而自动连接。当我在打印之前显示JFrame
时,我对自动连接等显示功能没有任何问题。
但是当我打印它时,它在纸上连接起来......
我一直在互联网上寻找数小时试图解决它但却一无所获。
我会分享我用来打印的代码,因为似乎问题来自这里:
public void test() throws PrinterException
{
PageFormat format = new PageFormat();
Paper paper = new Paper();
paper.setImageableArea(0.0,0.0,Double.MAX_VALUE,Double.MAX_VALUE);
format.setPaper(paper);
PrinterJob jb = PrinterJob.getPrinterJob();
format = jb.validatePage(format);
jb.setPrintable(this, format);
jb.print();
dispose();
}
public int print(Graphics g, PageFormat pf, int page)
throws PrinterException
{
if (page > 0)
{
return NO_SUCH_PAGE;
}
Dimension dim = this.getSize();
double cHeight = dim.getHeight();
double cWidth = dim.getWidth();
double pHeight = pf.getImageableHeight();
double pWidth = pf.getImageableWidth();
double pXStart = pf.getImageableX();
double pYStart = pf.getImageableY();
double xRatio = pWidth / cWidth;
double yRatio = pHeight / cHeight;
Graphics2D g2 = (Graphics2D)g;
g2.translate(pXStart, pYStart);
g2.scale(xRatio, yRatio);
this.paint(g2);
return Printable.PAGE_EXISTS;
}
顺便说一句,今年我开始使用Java,而且我是一个新手:)