3

我正在努力以自己的方式打印 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);

我尝试执行类似 in 的操作javax.swing.TablePrintable,即每次计算剪辑在哪里打印表格,但没有成功:行号仅打印在第一页上。我有点绝望,有什么想法吗?

编辑:这里有一些图片(太大,无法在这里发布)来展示我目前获得的内容,以及我想要获得的内容:

  • 第 1 页和第 2 页:http: //i.imgur.com/euzeq70.png

    如您所见,第二页上的行号应该相同,因为它是表格的左侧(表格的宽度适合 2 页)

  • 第 3 页和第 4 页:http: //i.imgur.com/YCFLu4X.png

    桌子的中间部分。如您所见,现在行号不应该是1 ... 49but 50 ... 99,而且它们仍然不会显示在左页上

  • 第 5 页和第 6 页:http: //i.imgur.com/4xugX4j.png

    桌子的底部。行号应该100并且也出现在左侧页面上。

我希望这现在更清楚了。

4

1 回答 1

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您需要自己创建的页眉/页脚调整...我已经做过一次了,但是代码很容易爆炸,因此只有小片段。

于 2013-04-28T08:08:20.453 回答