2

大家好,现在我面临一个严重的问题。我制作了一个 java 程序,需要打印该程序的 JFrame 之一。但我不能那样做。我在网上搜索过,但我发现的代码只打印第一个元素意味着只有一个元素可能是 JLabel 或 JTextBox。但我需要用所有数据打印整个页面。

谁能帮帮我吗?

谢谢

4

1 回答 1

1

将此代码附加到您的班级。希望对你有帮助

首先实现 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)这将打印该 parentPanel 上的所有组件。

现在我们告诉 Java 程序要打印什么,但要完成这个打印作业,我们必须创建 PrinterJob

PrinterJob job = PrinterJob.getPrinterJob(); job.setPrintable(this); boolean ok = job.printDialog(); if (ok) { try { job.print(); } catch (PrinterException ex) { System.out.println(ex); } }

将此代码放在打印按钮的 ActionListener 中。

于 2013-05-27T08:38:34.370 回答