gpt4 book ai didi

java - 如何从 Java 应用程序发送 JTable 数据到打印作业?

转载 作者:行者123 更新时间:2023-11-30 06:35:22 24 4
gpt4 key购买 nike

在我的应用程序中,我有一个带有数据的 JTable,我需要添加一个打印按钮,该按钮添加了在打印机纸上打印表格中数据的功能(发送打印机作业),如何使用 PrinterJob' 类?我一直在四处寻找示例,但找不到一个简单的示例来打印来自 JComponent 的一些数据。

这是我找到的网站之一:http://java.sun.com/products/java-media/2D/forDevelopers/sdk12print.html .但是我不确定要了解打印的工作原理(页面格式...等)要关注什么。

谢谢

最佳答案

我通过将整个表格绘制到打印机页面,相应地调整大小等解决了这个问题。因为打印实际上只是在不同的接收器上绘制。

请@Saher check my answer to other question我在其中提供了一些链接,这些链接对我了解 API 的工作方式/应用方式很有用。

编辑:

请务必检查教程,尤其是没有。 2.我这样做的方式是我有一个实现 Printable 接口(interface)的 MyPrintUtilityclass。它的构造函数采用我要打印的组件。当它获取组件时,它会计算将获取多少页并存储页面结束点。然后我有一个我调用它的方法来初始化打印对话框。

    public void print()
{
PrinterJob printJob = PrinterJob.getPrinterJob();
if(printJobName != null)
printJob.setJobName(printJobName);
printJob.setPrintable(this);
if(printJob.printDialog())
try
{
//for faster printing, turn off double buffering
disableDoubleBuffering(componentToPrint);
System.out.println("Calling PrintJob.print()");
printJob.print(new HashPrintRequestAttributeSet());
System.out.println("End PrintJob.print()");
}catch(PrinterException pe)
{
System.out.println("Error printing: " + pe);
}finally//whatever happend (exception or not) turn back on the double buffering
{
enableDoubleBuffering(componentToPrint);
}
}

在 Printable 接口(interface)的 public int print(Graphics g, PageFormat pf, int pageIndex) 方法中,我翻译了相应的图形,为每一页裁剪表格。

要检查的更多资源:

http://www.java2s.com/Code/Java/2D-Graphics-GUI/PrintinJavaMultipage.htm --- 在多页上打印

http://download.oracle.com/javase/tutorial/2d/printing/gui.html --- 打印 GUI 组件。

http://www.sideofsoftware.com/print_preview_tutorial.htm ---打印预览教程

http://www.java-tips.org/java-se-tips/java.awt.print/print-the-text-file-and-print-preview-them.html --- 一个关于如何预览和打印文本文件的绝妙示例。

编辑 2:

You must seriously read this one.在这里作者解释了如何在多个页面上进行拆分以及如何平移图形和移动剪辑等。

关于java - 如何从 Java 应用程序发送 JTable 数据到打印作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6136629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com