【问题标题】:Can any one help Printing a JFrame with all its component in Java program任何人都可以帮助在 Java 程序中打印 JFrame 及其所有组件吗
【发布时间】:2013-05-27 16:38:34
【问题描述】:

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

谁能帮帮我?

谢谢

【问题讨论】:

    标签: printing jframe


    【解决方案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) 这将打印该父面板上的所有组件。

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

    PrinterJob 作业 = PrinterJob.getPrinterJob(); job.setPrintable(this); boolean ok = job.printDialog(); 如果(好){ 尝试 { 作业.print(); } 捕捉(打印机异常前){ System.out.println(ex); } }

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      • 2020-12-01
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多