我正在尝试在打印 JTable 时创建彩色页眉和页脚。具体来说,我正在查看 javax.swing.JTable 中的 getPrintable(),但 MessageFormat 没有提供指定页眉或页脚颜色的选项。
我该怎么做?
澄清我有兴趣在打印时设置页眉/页脚。例如,记事本将文件名作为标题附加到您打印的内容中。
update似乎没有标准方法可以做到这一点,有人可以给我一些解决方法吗?到目前为止发布的唯一答案与打印(如发送到打印机,不显示到屏幕)页眉/页脚无关。
摘自我的评论:我对打印页眉/页脚感兴趣。例如,当您从记事本打印文档时,它会将文件名附加为标题(或者可能是页脚,我不记得了)
我能想到的一种解决方案是使用您自己的可打印文件:
public class CustomTablePrintable implements Printable {
Printable tablePrintable;
public void setTablePrintable(Printable printable) {
tablePrintable = printable;
}
public int print(Graphics graphics, PageFormat pageFormat,
int pageIndex) throws PrinterException {
if (pageIndex > 0) {
return NO_SUCH_PAGE;
}
tablePrintable.print(graphics, pageFormat, pageIndex);
Graphics2D g2d = (Graphics2D)graphics;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
// Draw header/footer here
graphics.drawString(header, posx, posy);
return PAGE_EXISTS;
}
}
当您从 JTable 调用 getPrintable 时,将其注入到自定义可打印的新实例中,然后将其与 PrinterJob 一起使用。
您现在可以根据需要绘制页眉和页脚,但也会丢失一些内容:
- 您不能使用 MessageFormat 来格式化消息。我相信您可以轻松地将此功能添加到您的可打印文件中。
- 页眉和页脚不会自动定位。不过,您可以对这些进行粗略估计。
EDIT:我查看了 Java 源代码,发现私有类 TablePrintable 可以完成所有工作。您可以查看源代码以查看页眉和页脚是如何打印的。然后您可以将此功能移至 Printable 类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)