Drucken von Listen bestehend aus Grafik und Text (unter swing)

Status
Nicht offen für weitere Antworten.

Tharsonius

Bekanntes Mitglied
Hallo zusammen,

ich arbeite seit einiger Zeit an einem kleinen Programm, welches mittels Java Swing entstanden ist. Das Programm soll unter Windows als auch Linux laufen. Nachdem ich nun den Datenbankzugriff gescheit am laufen habe möchte ich nun gerne einige Listen der Daten drucken.

Was ich drucken möchte:
Ich möchte auf einer A4 Seite gerne Ramen zeichnen und dann in die einzelnen umrahmten Bereiche (die unterschiedlich groß sind) entsprechend meine Daten aus der Datenbank schreiben.

Ich habe so etwas ähnliches bereits in einer anderen Programmiersprache gemacht, dort habe ich einen Druckauftrag auf den Standard Drucker gesendet und dann auf das Druckevent von Windows reagiert und die Seite entsprechend gefüllt.

Nun würde ich in java gerne so etwas ähnliches machen. Geht dies überhaupt?

Ich habe bereits ein wenig geschaut und bin bereits über die java.awt.Desktop Klasse gestolpert, die es seit Java 6 gibt. Diese druckt mir ja ein File.

Ich möchte meine Listen aber nicht als Dateien auf die Festplatte legen sondern direkt die Listen generieren, ausdrucken und verwerfen. Oder muss ich diese erst auf Festplatte zwischenspeichern?

Welches ist das beste Format, um meine Listen zu generieren (Bilder oder etwas anderes) ?

Wie sieht das mit linux aus, muss ich beim drucken unter Linux irgendwas gesondert beachten ?

Ich hoffe Ihr könnt mir ein wenig weiter helfen und mir Gedanklich ein wenig auf die Sprünge helfen.
 

faetzminator

Gesperrter Benutzer
Ich würde ein PDF generieren, das sieht überall gleich aus und sollte keine Probleme machen. Die von mir empfohlene lib dazu wär iText.
 

Tharsonius

Bekanntes Mitglied
Das heisst dann aber auch, dass ich sicherstellen muss, dass überall der Acrobat Reader installiert ist, damit das erstellte PDF dann gedruckt werden kann, oder?

Wegen iText schaue ich mal, in wieweit ich die einbinden darf, muss die dann ja auch immer mit liefern, wenn ich mein Programm weiter gebe.

Am liebsten würde ich alles in Java machen, da ich davon ausgehen kann, dass auf dem Zielrechner die JRE installiert ist, alles andere muss ich mitbringen.
 

faetzminator

Gesperrter Benutzer
Nunja, es gibt tausende andere PDF Reader ;) Und meiner Meinung nach sind diese noch verbreiteter als die JVM...
 

Tharsonius

Bekanntes Mitglied
Ich habe einfach mal ein wenig getestet und dabei diesen Codeschnipsel verwendet:
Java:
		try
		{  
			System.out.println(java.awt.Desktop.isDesktopSupported());
			java.awt.Desktop desk = java.awt.Desktop.getDesktop();
			System.out.println("Test");
			java.io.File datei = new java.io.File("D:/test.txt");
			System.out.println("Test");
			desk.open(datei);
			System.out.println("Test");
		}  
		catch (Exception e)
		{
			System.out.println("Test2");
		}

Die Datei test.txt ist vorhanden und lässt sich mittels delete beispielsweise löschen. Dennoch stürzt bei mir anscheinend die Virtual Machine ab. Die Ausgabe dieses Programmschnipsels sieht so aus:

true
Test
Test
Test
#
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_FLT_STACK_CHECK (0xc0000092) at pc=0x0090ce69, pid=1816, tid=1480
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0_01-b06 mixed mode)
# Problematic frame:
# v ~RuntimeStub::resolve_opt_virtual_call
#
# An error report file with more information is saved as hs_err_pid1816.log
#
# If you would like to submit a bug report, please visit:
# HotSpot Virtual Machine Error Reporting Page
#


Wenn ich die Zeile
desk.open(datei);
auskommentiere, dann läuft alles problemlos, passiert aber nichts weiter (logischerweise).

Ich verwende ein JDesktopPane() und erstelle da verschiedene JInternalFrames.

Kann das etwas damit zu tun haben?
Irgend jemand eine Idee was ich da falsch mache oder was da klemmt?
 
Zuletzt bearbeitet:

kowa

Aktives Mitglied
Hallo,

ich glaube du brauchst das file garnicht öffnen. Desktop.print() erwartet ein File als Parameter:

public void print(File file)
throws IOException

Mach also aus open ein print.

Wenn du keine Dateien anlegen willst, um sie zu drucken, kannst du auch ein BufferedImage erstellen, was du dann mit PrinterJob und PrintObject druckst.

Hier ein kleiner Ausschnitt:

Java:
printBtn.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent arg0) {
//				Printing
				PrinterJob job = PrinterJob.getPrinterJob();
				job.setPrintable(new PrintObject());
				if (job.printDialog())
			      {
			         // If the user has pressed OK (printDialog returns true), then go
			         // ahead with the printing. This is started by the simple call to
			         // the job print() method. When it runs, it calls the page print
			         // object for page index 0. Then page index 1, 2, and so on
			         // until NO_SUCH_PAGE is returned.
			         try { job.print(); }
			         catch (PrinterException e) { System.out.println(e); }
			      }

			}
			
		});
		
	}
	
	class PrintObject implements Printable
	{
	  public int print (Graphics g, PageFormat f, int pageIndex)
	  {
	    if (pageIndex == 0)
	    {

//	    	Drawing Image to print
	    	g.drawImage(img,0,0,null);
	    	return PAGE_EXISTS;
	    }
	  else return NO_SUCH_PAGE;
	  }
	}

Benutze ich auch für Etiketten, auf denen Daten aus einer Datenbank stehen.
 

Tharsonius

Bekanntes Mitglied
Ich habe print ebenfalls bereits ausprobiert, bekomme die selbe Ausgabe mit dem selben Absturz.
Das mit dem open ist nur aus Testzwecken gekommen, weil ich dachte, dass es eventuell am print liegt.

Anscheinend klemmt da aber irgendwas am Desktop, wo ich derzeit nicht weiß was.

Ich habe derweil auch mal isSupported verwendet um zu prüfen ob print eventuell nicht geht oder open, in beiden Fällen bekomme ich aber true zurück.

Kann das eventuell an dem Desktopmanager liegen, den ich für das Programm verwende?

Hier mal der Konstruktor vom Fenster selber.
Java:
public final class BasisFenster
extends JFrame
implements WindowListener, ActionListener
{
	private static final long serialVersionUID = 1L;
	private Sitzung session;
	private JDesktopPane desktop;
	private JMenuItem metal;
	private JMenuItem motif; 
	private JMenuItem windows;

	public BasisFenster()
	{
		super("Version " + new BasisKonstanten().getVersionString());
		desktop = new JDesktopPane();
		desktop.setDesktopManager(new DefaultDesktopManager());
		setContentPane(desktop);
		session = new Sitzung(desktop);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(1000, 700);
		setLocation(0, 0);
		createMenue();
		addWindowListener(this);
	}
[...]
}


Meine Problemfunktion ist eine Methode der Klasse Sitzung, die über das Menü des Basisfensters aufgerufen wird.

@kowa: Ich werde das mal mit Deiner Methode ausprobieren, vielleicht klappt das besser...
 
Zuletzt bearbeitet:

Tharsonius

Bekanntes Mitglied
Der Ansatz von Kowa funktioniert genau so wie ich mir das vorstelle, zumindest unter Windows. Unter Linux hab ich das noch nicht testen können. Aber vorerst passt das so. Vielen Dank.


Warum meine Virtual Machine abstürzt weiß ich zwar noch immer nicht, aber soll mir vorerst egal sein.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Listen - Anzahl positiver Werte drucken Java Basics - Anfänger-Themen 8
M html-seite drucken (gerendert) Java Basics - Anfänger-Themen 3
T DamagedFontException beim drucken Java Basics - Anfänger-Themen 3
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
izoards Drucken Frage zu FAQ Beitrag Java Basics - Anfänger-Themen 2
U Drucken.. Birt vs Jasper Java Basics - Anfänger-Themen 1
H Drucken auf Drucker Java Basics - Anfänger-Themen 8
B Drucken mit einem Terminal / Bon Printer Java Basics - Anfänger-Themen 4
B HTML Code drucken Java Basics - Anfänger-Themen 4
B Drucken: Default Paper von Drucker? Mein Drucker druckt falsch Java Basics - Anfänger-Themen 3
B Drucken in JAVA -> nicht "Java printing" Java Basics - Anfänger-Themen 3
D Erste Schritte HTML aus JEditorPane drucken Java Basics - Anfänger-Themen 5
I Drucken in Java / verschiedene Papierformate Java Basics - Anfänger-Themen 0
I Drucken (Print) monitoren Java Basics - Anfänger-Themen 0
I Erste Schritte Drucken in JAVA / Druckaufträge etc. Java Basics - Anfänger-Themen 15
T Drucken mit Java Java Basics - Anfänger-Themen 16
E Input/Output Drucken am Mac immer gleiche Schriftgröße?!? Java Basics - Anfänger-Themen 2
E Input/Output png Auf Dymo 450 drucken Java Basics - Anfänger-Themen 2
S JPanel drucken -> PrinterException Java Basics - Anfänger-Themen 2
C Drucken/Druckdesign mit Java Java Basics - Anfänger-Themen 8
J checkbox status abfragen und drucken Java Basics - Anfänger-Themen 13
K doppeltes paint beim Drucken Java Basics - Anfänger-Themen 8
B Source Code "in einem Rutsch" drucken in Eclipse Java Basics - Anfänger-Themen 5
K Drucken Java Basics - Anfänger-Themen 8
G Mit Java Drucken Java Basics - Anfänger-Themen 11
O OOP prindata Methode aufrufen!? Methode drucken + Konstruktor Java Basics - Anfänger-Themen 9
G DRUCKEN von z.B. eines JFrame über print(Graphics g) Java Basics - Anfänger-Themen 9
K einfaches Drucken von Text (und ggf Bildern,gemischt) Java Basics - Anfänger-Themen 11
N barbecue Barcodes drucken Java Basics - Anfänger-Themen 5
H Bericht drucken Java Basics - Anfänger-Themen 4
T [Minimalprogramm] mit Java Drucken Java Basics - Anfänger-Themen 6
L drucken mit DocPrintJob Java Basics - Anfänger-Themen 3
R Drucken mithilfe eines Externen ActionListeners Java Basics - Anfänger-Themen 17
S Inhalt von GUI-Eingabe drucken Java Basics - Anfänger-Themen 7
I PDF aus JSF - Seite drucken mit iText Java Basics - Anfänger-Themen 5
J JTable Drucken Java Basics - Anfänger-Themen 3
J mit COM-Port drucken Java Basics - Anfänger-Themen 8
R mehrseitiges Drucken Java Basics - Anfänger-Themen 3
H Papierschacht beim Drucken ansprechen Java Basics - Anfänger-Themen 4
A JTree drucken Java Basics - Anfänger-Themen 2
M html datei drucken Java Basics - Anfänger-Themen 18
E BufferedImage drucken Java Basics - Anfänger-Themen 3
K Drucken mit PrinterJob Java Basics - Anfänger-Themen 3
andresendo Drucken Java Basics - Anfänger-Themen 2
D Drucken - Seite leer Java Basics - Anfänger-Themen 2
S Drucken mit iText? Java Basics - Anfänger-Themen 7
T Formular drucken! Java Basics - Anfänger-Themen 2
S Drucken in farbe Java Basics - Anfänger-Themen 4
G Problem mit Drucken Java Basics - Anfänger-Themen 2
G Strings drucken Java Basics - Anfänger-Themen 2
N Im Querformat drucken mit PrintJob Java Basics - Anfänger-Themen 4
Z Drucken eines JTables mit Text drüber Java Basics - Anfänger-Themen 6
S ich komm mit dem drucken nich klar Java Basics - Anfänger-Themen 17
S Drucken! Java Basics - Anfänger-Themen 16
B Formatierung beim Drucken Java Basics - Anfänger-Themen 4
D Drucken Java Basics - Anfänger-Themen 3
M Drucken Java Basics - Anfänger-Themen 2
B RTF erstellen und drucken Java Basics - Anfänger-Themen 3
G Drucken mit PrintJob oder PrinterJob? Java Basics - Anfänger-Themen 4
F Drucken einer Text Datei Java Basics - Anfänger-Themen 2
M Probleme beim Drucken Java Basics - Anfänger-Themen 4
R String drucken Java Basics - Anfänger-Themen 3
G Drucken von pdf Dokumenten mit Lücken Java Basics - Anfänger-Themen 2
J Drucken von files Java Basics - Anfänger-Themen 4
D Drucken ohne Dialogfeld Java Basics - Anfänger-Themen 2
E HTML Datei drucken Java Basics - Anfänger-Themen 4
G drucken: genaues positionieren Java Basics - Anfänger-Themen 2
R rechtsbündiges Drucken Java Basics - Anfänger-Themen 2
G Drucken Java Basics - Anfänger-Themen 2
D PDF Dokument drucken Java Basics - Anfänger-Themen 10
S verständnisproblem drucken Java Basics - Anfänger-Themen 11
J Serienbrief drucken Java Basics - Anfänger-Themen 2
A Drucken mit Java über FOP Java Basics - Anfänger-Themen 9
B Bilder drucken Java Basics - Anfänger-Themen 4
M Formatiert Drucken in Java Java Basics - Anfänger-Themen 3
A Drucken und Vorschau Java Basics - Anfänger-Themen 4
F Java-Logo drucken Java Basics - Anfänger-Themen 2
S Noch ungelöst ! Klasse JTable und Klasse Drucken verknüpfen. Java Basics - Anfänger-Themen 8
M DATEI DRUCKEN ????? Java Basics - Anfänger-Themen 4
D Listen in Listen in Listen ... ??? Java Basics - Anfänger-Themen 2
XWing listen Java Basics - Anfänger-Themen 7
FunkyPhil94 addLast und addFirst bei Listen Java Basics - Anfänger-Themen 6
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
S Lineare listen verkettung Java Basics - Anfänger-Themen 7
S Listen Java Basics - Anfänger-Themen 12
S Listen , Nodes am ende anängen Java Basics - Anfänger-Themen 6
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
M Java Listen Java Basics - Anfänger-Themen 4
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
A PhoneBook mit verketteten listen Java Basics - Anfänger-Themen 48
F ich brauche Hilfe bei Listen Java Basics - Anfänger-Themen 13
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
G Java Listen und Iterator Java Basics - Anfänger-Themen 2
S Erklaerung Listen Java Basics - Anfänger-Themen 27
J Implementierung Listen-ADT Java Basics - Anfänger-Themen 131

Ähnliche Java Themen

Neue Themen


Oben