大家好,现在我面临一个严重的问题。我制作了一个 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)
这将打印该 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 中。