3

私は自分なりの方法でJTableを印刷するのに苦労しています。これは私が印刷するときに取得したいものです:

       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ページ目はテーブルの左側にあるため、行番号は同じである必要があります(テーブルの幅は2ページに収まります)。

  • 3ページと4ページ:http://i.imgur.com/YCFLu4X.png

    テーブルの中央部分。ご覧のとおり、行番号はである必要があります1 ... 4950 ... 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 に答える