2013-02-21 5 views
3

Je suis aux prises avec l'impression de JTables à ma manière. Ce que je voudrais obtenir lors de l'impression:Java - Comment imprimer les numéros de ligne sur chaque page?

 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   | 

Comme vous pouvez le voir, je voudrais obtenir TableHeader sur chaque page et les numéros de ligne également, sur chaque page (que je réussis à obtenir!). Est-ce que quelqu'un a déjà fait quelque chose comme ça?

Voici comment mon JTable est géré:

scrollPane = new JScrollPane(); 
scrollPane.setViewportView(table);  // basic JTable 
scrollPane.setRowHeaderView(rowTable); // basic JTable with only 1 column 
tableHeader = table.getTableHeader(); // 
scrollPane.setColumnHeaderView(tableHeader); 

J'ai essayé de faire quelque chose comme dans javax.swing.TablePrintable, ce calcul à chaque fois que le clip où imprimer la table, mais sans succès: les lignes numéros d'impression uniquement sur la première page Je suis un peu désespéré, des idées?

EDIT: Voici quelques photos (trop gros pour être affiché ici) pour montrer ce que j'obtenir pour le moment, et ce que je voudrais obtenir:

  • Pages 1 et 2: http://i.imgur.com/euzeq70.png

    Comme vous pouvez le voir, les numéros de ligne doivent être les mêmes sur la deuxième page, car il est la partie gauche de la table (et en forme de largeur sur 2 pages de la table)

  • Pages 3 et 4: http://i.imgur.com/YCFLu4X.png

    Partie centrale de la table. Comme vous pouvez le voir l'est maintenant rangée chiffres ne doivent pas être 1 ... 49 mais 50 ... 99, et ils ne montrent pas encore à la page gauche

  • Pages 5 et 6: http://i.imgur.com/4xugX4j.png

    partie inférieure de la table. Le numéro de ligne doit être 100 et apparaître également sur la page de gauche.

J'espère que c'est plus clair maintenant.

+0

Pourriez-vous publier votre code de reproduction? – StanislavL

+0

C'est un peu énorme, c'est pourquoi je ne l'ai pas posté. En fait, il est très proche de ce qui est dans 'javax.swing.TablePrintable', sur lequel j'essaie d'ajouter l'impression pour les numéros de ligne. –

+0

Copie possible de http://stackoverflow.com/questions/14954377/how-to-print-row-numbers-of-a-jtable-on-multiple-pages –

Répondre

0

Je pense que le plus facile à obtenir une solution est de générer quelque chose comme

public class WrapPrintable implements Printable 

et passer outre

public int print(final Graphics graphics, 
       final PageFormat pageFormat, 
       int pageIndex) throws PrinterException { 

pour la configuration du PaperFormat pour ajouter tête additonal et/ou dans l'espace de pied de page et il écrire une méthode comme

Graphics2D g2d = printGraphics(graphics, pageFormat, pageIndex, format); 

et le printGraphics fait votre en-tête/fo D'autres ajustements, que vous devez créer par vos propres moyens ... Je l'ai déjà fait une fois, mais le code explose assez facilement, donc seulement de petits fragments.

+0

Exactement ce que j'ai fait, non sans efforts, mais cela a fonctionné! –

Questions connexes