【发布时间】:2013-05-27 16:38:34
【问题描述】:
大家好, 现在我面临一个严重的问题。我制作了一个 java 程序,需要打印该程序的 JFrame 之一。但我不能那样做。 我在网上搜索过,但我发现的代码只打印第一个元素意味着只有一个元素可能是 JLabel 或 JTextBox。但我需要用所有数据打印整个页面。
谁能帮帮我?
谢谢
【问题讨论】:
大家好, 现在我面临一个严重的问题。我制作了一个 java 程序,需要打印该程序的 JFrame 之一。但我不能那样做。 我在网上搜索过,但我发现的代码只打印第一个元素意味着只有一个元素可能是 JLabel 或 JTextBox。但我需要用所有数据打印整个页面。
谁能帮帮我?
谢谢
【问题讨论】:
将此代码附加到您的班级。希望对你有帮助
首先实现 Java 类的 Printable 接口
class ClassName extends JFrame implements Printable
{
//your code goes here
}
实现 Printable 接口后重写方法 print()
public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
if (page > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
//Give the component to be printed here...
System.out.println("Successfully printed");
return PAGE_EXISTS;
}
现在决定要打印的内容。以这样一种方式编写代码,即所有组件都必须位于一个父 JPanel(parentPanel) 上。现在在上面的代码旁边的注释中给出parentPanel.print(g) 这将打印该父面板上的所有组件。
现在我们告诉 Java 程序要打印什么,但要完成这个打印作业,我们必须创建 PrinterJob
PrinterJob 作业 = PrinterJob.getPrinterJob(); job.setPrintable(this); boolean ok = job.printDialog(); 如果(好){ 尝试 { 作业.print(); } 捕捉(打印机异常前){ System.out.println(ex); } }
将此代码放在打印按钮的 ActionListener 中。
【讨论】: