Java 如何打印单个JPanel';什么内容?
我有一个Java 如何打印单个JPanel';什么内容?,java,swing,printing,Java,Swing,Printing,我有一个JPanel,有两个带图片的标签。我需要打印JPanel的这些内容。请帮帮我。我怎样才能只打印这个JPanel的内容,因为我的JFrame上也有不同的组件,但我只需要打印这个JPanel 谢谢。一个简单的方法是实现可打印的接口(在java.awt.print中)并添加指定的打印方法(其工作原理类似于绘制——在这里,您可以指定要在打印页面上绘制的组件)。当您想要实际打印面板的内容时,获取一个PrinterJob实例并调用其setPrintable方法,传递实现Printable的对象 不过
JPanel
,有两个带图片的标签。我需要打印JPanel
的这些内容。请帮帮我。我怎样才能只打印这个JPanel
的内容,因为我的JFrame
上也有不同的组件,但我只需要打印这个JPanel
谢谢。一个简单的方法是实现
可打印的
接口(在java.awt.print
中)并添加指定的打印
方法(其工作原理类似于绘制
——在这里,您可以指定要在打印页面上绘制的组件)。当您想要实际打印面板的内容时,获取一个PrinterJob
实例并调用其setPrintable
方法,传递实现Printable
的对象
不过,这只是一个简单的概述。我建议您查看更多信息。下面是一个打印任何Swing组件的示例
public void printComponenet(Component component){
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName(" Print Component ");
pj.setPrintable (new Printable() {
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());
component.paint(g2);
return Printable.PAGE_EXISTS;
}
});
if (pj.printDialog() == false)
return;
try {
pj.print();
} catch (PrinterException ex) {
// handle exception
}
}
只需编辑并输入框架、面板(jPanel1)和按钮(print)的名称。 “this”指的是JFrame类(即我的类扩展了javax.swing.JFrame),只需放置框架的引用而不是“this”
private void PritnActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Toolkit tkp = jPanel1.getToolkit();
PrintJob pjp = tkp.getPrintJob(this, null, null);
Graphics g = pjp.getGraphics();
jPanel1.print(g);
g.dispose();
pjp.end();
}
您如何在页面中相应地缩放组件以使其适合?Saher您知道如何做到这一点吗?谢谢。请添加更多解释(文本)好吗?我们应该派生一个JComponent并添加这个方法吗?或者我们应该用这个方法做什么?非常感谢。对于
组件的多页打印机