我正在努力以自己的方式打印JTables。这是我打印时想要获得的:
Page 1 Page 2 Page 3
| 1 2 3 | | 4 5 6 | | 7 8 9 |
|1 | |1 | |1 |
|2 | |2 | |2 |
|3 | |3 | |3 |
Page 4 Page 5 Page 6
| 1 2 3 | | 4 5 6 | | 7 8 9 |
|4 | |4 | |4 |
|5 | |5 | |5 |
|6 | |6 | |6 |
正如你所看到的,我想在每一页上获得tableHeader(我成功获得了!),并且每页都有行号。有没有人做过这样的事情?
这是我的JTable的管理方式:
scrollPane = new JScrollPane();
scrollPane.setViewportView(table); // basic JTable
scrollPane.setRowHeaderView(rowTable); // basic JTable with only 1 column
tableHeader = table.getTableHeader(); //
scrollPane.setColumnHeaderView(tableHeader);
我尝试在javax.swing.TablePrintable
中执行某些操作,即每次剪辑在哪里打印表时计算,但没有成功:行号仅在第一页上打印。我有点绝望,有什么想法吗?
编辑:这里有一些图片(太大了,不能在这里发布)来展示我目前获得的内容,以及我想要获得的内容:
第1页和第2页:http://i.imgur.com/euzeq70.png
如您所见,第二页上的行号应该相同,因为它是表格的左侧部分(表格的宽度适合2页)
第3页和第4页:http://i.imgur.com/YCFLu4X.png
表格的中间部分。正如您所看到的那样,现在行号不应该是1 ... 49
而是50 ... 99
,并且它们仍然不会显示在左页
第5和第6页:http://i.imgur.com/4xugX4j.png
表格的下半部分。行号应为100
,并且也会显示在左页。
我希望现在更清楚了。
答案 0 :(得分:0)
我认为最容易获得解决方案的是生成类似
的内容public class WrapPrintable implements Printable
并覆盖
public int print(final Graphics graphics,
final PageFormat pageFormat,
int pageIndex) throws PrinterException {
用于设置Paperformat以添加额外的页眉和/或页脚空间,并编写一些方法,如
Graphics2D g2d = printGraphics(graphics, pageFormat, pageIndex, format);
并printGraphics
执行页眉/页脚调整,您需要自己创建...我已经完成了一次,但代码很容易爆炸,因此只有很小的碎片。