任何人都可以帮助在Java程序中使用其所有组件打印JFrame

时间:2012-09-25 13:59:08

标签: printing jframe

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

有人可以帮助我吗?

由于

1 个答案:

答案 0 :(得分: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;
}

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)上。现在在注释旁边的上面代码中给出这将打印该父面板上的所有组件。

现在我们告诉Java程序要打印什么但是为了完成这个打印工作,我们必须创建PrinterJob parentPanel.print(g)

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