Zwei JTables auf eine A4-Seite mit einstellbaren Rändern

phippsroe

Mitglied
Hallo, ich bin ganz neu hier, neu in Java und hoffe meine Frage hier richtig zu platzieren.

Ich habe einen Wochenkalender als JTable gebastelt der von Montag bis Sonntag mit Datum und Feiertagen versehen wird und mehrere leere Zeilen darunter beinhaltet.
Mit zwei JButtons wechsel ich dann zwischen den Kalenderwochen, sodas immer nur eine Kalenderwoche angezeigt wird.

Jetzt suche ich die einfachste Möglichkeit um eine bestimmte Anzahl von Kalenderwochen zu drucken und dabei sollen immer zwei Wochen auf ein A4-Blatt, idealerweise mit einstellbaren Rändern/Abständen.
 

Anhänge

  • Wochenkalender.jpg
    Wochenkalender.jpg
    119,2 KB · Aufrufe: 20
Beste Antwort
Wie ich es gefuerchtet hatte, die Antwort ist nicht so simpel (wie immer wenn es um Drucken geht).

Zunaechst, du kannst dir zum Beispiel ein Bild anlegen in welches dann die Komponenten drucken koennen:

Java:
Image image = new BufferedImage(29000, 21000, BufferedImage.TYPE_INT_ARGB);
Graphics graphics = image.getGraphics();

jtable.print(graphics);

Wie sich das genau verhaelt kann ich dir nicht sagen. Eventuell musst du dann die JTables in eigene Images drucken, und die beiden Images dann in einem zusammenfassen damit alles richtig platziert ist.

Was du auch versuchen kannst ist beide in einem JPanel anzuordnen und dann den JPanel zu drucken (hat auch eine "print" Methode).

Und zum Schluss gibt es noch das "Printable" Interface...
Danke schonmal für die schnelle Antwort.
Mit der print-Methode der JTable lässt sich scheinbar nur eine Tabelle pro Seite drucken, die habe ich schon implementiert.

Ich probiere morgen mal ob ich mit der FancyPrintingJTable etwas hinbekomme.
 
Also da ich noch Anfänger bin, erscheint mir das alles etwas kompliziert. Ich dachte eher dass ich ein Graphics-Object aus den "getGraphics()" der beiden Tabellen bilden kann um dieses dann mit dem PrinterJob und der Print-Methode drucken zu können.

Ist das nicht so oder so ähnlich realisierbar?
 
Drucken von Dingen ist nie einfach in meiner Erfahrung. Du koenntest natuerlich auch probieren ob du es schaffst die JTables in einen eigenen Graphik-Kontext rendern zu lassen, dann kannst du diese dort kontrollieren wie sie angeordnet sind und aehnlich. Dahinter koenntest du wahrscheinlich nur schauen ob du vielleicht eine Druck-Bibliothek findest.
 
Uff, wie könnte das denn besipielhaft aussehen?
Ich versuche hier schon wieder seit ein paar Stunden was brauchbares zu finden, aber in den meisten Beispielen werden nur Strings oder Bilder gedruckt.
 
Wie ich es gefuerchtet hatte, die Antwort ist nicht so simpel (wie immer wenn es um Drucken geht).

Zunaechst, du kannst dir zum Beispiel ein Bild anlegen in welches dann die Komponenten drucken koennen:

Java:
Image image = new BufferedImage(29000, 21000, BufferedImage.TYPE_INT_ARGB);
Graphics graphics = image.getGraphics();

jtable.print(graphics);

Wie sich das genau verhaelt kann ich dir nicht sagen. Eventuell musst du dann die JTables in eigene Images drucken, und die beiden Images dann in einem zusammenfassen damit alles richtig platziert ist.

Was du auch versuchen kannst ist beide in einem JPanel anzuordnen und dann den JPanel zu drucken (hat auch eine "print" Methode).

Und zum Schluss gibt es noch das "Printable" Interface, welches es dir erlaubt direkt dass was gedruck werden soll zu zeichnen. Daraus muss man sich etwas zusammen bauen was fuer dich passt.

Du kannst natuerlich auch eine Reporting-Loesung probieren, aber meiner Erfahrung nach sind die alle fuer "kleine" Applikationen viel zu gewaltig.
 
Beste Antwort
Was du auch versuchen kannst ist beide in einem JPanel anzuordnen und dann den JPanel zu drucken (hat auch eine "print" Methode).
Die Idee fand ich gut und habe mal genauer in die Richtung gesucht und bin dabei im Forum auf Folgendes gestoßen:
Drucken von JPanel
Das funktioniert super und ich kann damit soviele leere Tabellenblätter drucken wie ich möchte! (Zwei pro Seite und mit variabler Seitenzahl)

Danke für die Hilfe!!! 👍


Jetzt habe ich noch ein kleines Problem, was wohl damit zusammenhängt dass ich noch Anfänger bin...
Wie erstelle ich denn Kopien von Tabellen, statt darauf zu referenzieren?
Nutze ich die Referenzen, dann ändere ich ja die Originale mit, wenn ich sie für den Druck anpasse. Nutze ich neue Instanzen sind meine gedruckten Tabellen ohne ausgefüllte Inhalte.
 
Spricht etwas dagegen diese mit genau der gleichen Methode zu befuellen als die Anzeigetabellen?
Ja ehm nichts. Wie ich schon sagte: Anfängerfehler. ^^ Habs jetzt super gelöst bekommen.

Leider sind meine Klassenstruktur und die Übersichtlichkeit meines Codes noch sehr verworren, dadurch habe ich mir meine neuen Tabellen wieder leer befüllt statt die Inhalte der befüllten einfach zu nehmen.

Fazit: Das war meine erste Frage hier im Forum und mir wurde gut geholfen. Ich denke meine Fähigkeite verbessern sich mit der Praxis und freue mich weiterhin auf eure Hilfe. (Oder dass ich mal helfen kann^^)
 

Neue Themen


Zurück
Oben