Drucken der JTextArea

Boje

Mitglied
Hi!
Wir haben im Studium leider nichts über das Drucken aus Java heraus gelernt, ich wollte aber ein Programm für mich schreiben. Habe leider auch bei google und der internen Suche keine konstruktiven Lösungen gefunden.

Bei actionPerformed - "Drucken" wird mir immer das PrintJob.setPrintable(p) und das PrintJob.print() rot unterringelt und ich weiß nicht, wo der Fehler liegen könnte. Es wäre schön, wenn mir jemand einen Tipp geben könnte :)

Hier mein Code:
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;

class TextPrintable implements Printable 
{
    private JTextArea text;
    public int print(Graphics g, PageFormat pageFormat, int pageIndex) 
    {
        ((Graphics2D) g).translate(pageFormat.getImageableX(), pageFormat.getImageableY());
        text.print(g);
        return Printable.PAGE_EXISTS;
    }
    public void setText(JTextArea text) 
    {
        this.text = text;
    }
}

public class Holzliste 
extends JFrame
implements ActionListener
{
	private static final long serialVersionUID = 1L;
	private JTextArea anzeige;
	private JButton speichern;
	private JButton drucken;
	private JTextField nrAnzeige;
	private JTextField längeAnzeige;
	private JTextField durchmesserAnzeige;
	private JComboBox klasseAnzeige;
	private JComboBox güteklasseAnzeige;
	private static final String[] klassen = {"Ia", "Ib", "IIa", "IIb", "IIIa", "IIIb", "IV", "V", "VI"};
	private static final String[] güteklassen = {"A", "B", "C", "Cgw", "D", "K"};
	private String[][] arr = new String[10][4];
	private int idx = 0;

	public Holzliste()
	{
		super("Holzliste");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		getContentPane().setLayout(new BorderLayout());

		JPanel oben = new JPanel();
		oben.setLayout(new GridLayout(1,8));
		JLabel nr = new JLabel("Nummer: ");
		oben.add(nr);
		nrAnzeige = new JTextField(""+(idx+1));
		nrAnzeige.setEditable(false);
		oben.add(nrAnzeige);
		JLabel länge = new JLabel("Länge: ");
		oben.add(länge);
		längeAnzeige = new JTextField();
		oben.add(längeAnzeige);
		JLabel durchmesser = new JLabel("Durchmesser: ");
		oben.add(durchmesser);
		durchmesserAnzeige = new JTextField();
		oben.add(durchmesserAnzeige);
		JLabel klasse = new JLabel("Klasse: ");
		oben.add(klasse);
		klasseAnzeige = new JComboBox(klassen);
		oben.add(klasseAnzeige);
		JLabel güteklasse = new JLabel("Güteklasse: ");
		oben.add(güteklasse);
		güteklasseAnzeige = new JComboBox(güteklassen);
		oben.add(güteklasseAnzeige);

		getContentPane().add(oben, BorderLayout.NORTH);

		anzeige = new JTextArea("Holzliste \n");
		
		getContentPane().add(new JScrollPane(anzeige), BorderLayout.CENTER);

		JPanel unten = new JPanel(new GridLayout(1,2));
		speichern = new JButton("Speichern");
		speichern.addActionListener(this);
		unten.add(speichern);
		drucken = new JButton("Drucken");
		drucken.addActionListener(this);
		unten.add(drucken);

		getContentPane().add(unten, BorderLayout.SOUTH);

		setLocation(400,200);
		setSize(800, 500);	
		setVisible(true);
	}

	public void actionPerformed(ActionEvent e)
	{
		if(e.getActionCommand().equals("Speichern"))
		{
			if(idx<arr.length)
			{
				arr[idx][0] = längeAnzeige.getText();
				arr[idx][1] = durchmesserAnzeige.getText();
				arr[idx][2] = (String) klasseAnzeige.getSelectedItem();
				arr[idx][3] = (String) güteklasseAnzeige.getSelectedItem();
				anzeige.append("Baumnummer: " + (idx+1) + "\t Länge: " + arr[idx][0] + "\t Durchmesser: " + arr[idx][1] + "\t Klasse: " + arr[idx][2] + "\t Güteklasse: " + arr[idx][3] + "\n");
				idx++;
				nrAnzeige.setText(""+(idx+1));
			}
		}
		
		if(e.getActionCommand().equals("Drucken"))
		{
			
			
			TextPrintable p = new TextPrintable();
			p.setText(anzeige);
			PrintJob.setPrintable(p);
			PrintJob.print();
			
		}
	}

	public static void main(String[] args) 
	{
		Holzliste f = new Holzliste();
	}

}
 

Boje

Mitglied
Inzwischen bin ich selbst weitergekommen, habe nun aber das Problem. Drucker-Dialogfenster öffnet sich, er druckt auch (dauert halt ewig bis der Druckauftrag dann wirklich verarbeitet wird), aber er druckt die Seite unendlich? mal, auf jeden Fall sehr oft und auch nur die Voreingestelle Überschrift und nicht das, was ich später eingetragen hab... Was würde hier Abhilfe schaffen?

Code:

Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;

class TextPrintable implements Printable 
{
    private JTextArea text;
    public int print(Graphics g, PageFormat pageFormat, int pageIndex) 
    {
        ((Graphics2D) g).translate(pageFormat.getImageableX(), pageFormat.getImageableY());
        text.print(g);
        return Printable.PAGE_EXISTS;
    }
    public void setText(JTextArea text) 
    {
        this.text = text;
    }
}

public class Holzliste 
extends JFrame
implements ActionListener
{
	private static final long serialVersionUID = 1L;
	private JTextArea anzeige;
	private JButton speichern;
	private JButton drucken;
	private JTextField nrAnzeige;
	private JTextField längeAnzeige;
	private JTextField durchmesserAnzeige;
	private JComboBox klasseAnzeige;
	private JComboBox güteklasseAnzeige;
	private static final String[] klassen = {"Ia", "Ib", "IIa", "IIb", "IIIa", "IIIb", "IV", "V", "VI"};
	private static final String[] güteklassen = {"A", "B", "C", "Cgw", "D", "K"};
	private String[][] arr = new String[10][4];
	private int idx = 0;

	public Holzliste()
	{
		super("Holzliste");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		getContentPane().setLayout(new BorderLayout());

		JPanel oben = new JPanel();
		oben.setLayout(new GridLayout(1,8));
		JLabel nr = new JLabel("Nummer: ");
		oben.add(nr);
		nrAnzeige = new JTextField(""+(idx+1));
		nrAnzeige.setEditable(false);
		oben.add(nrAnzeige);
		JLabel länge = new JLabel("Länge: ");
		oben.add(länge);
		längeAnzeige = new JTextField();
		oben.add(längeAnzeige);
		JLabel durchmesser = new JLabel("Durchmesser: ");
		oben.add(durchmesser);
		durchmesserAnzeige = new JTextField();
		oben.add(durchmesserAnzeige);
		JLabel klasse = new JLabel("Klasse: ");
		oben.add(klasse);
		klasseAnzeige = new JComboBox(klassen);
		oben.add(klasseAnzeige);
		JLabel güteklasse = new JLabel("Güteklasse: ");
		oben.add(güteklasse);
		güteklasseAnzeige = new JComboBox(güteklassen);
		oben.add(güteklasseAnzeige);

		getContentPane().add(oben, BorderLayout.NORTH);

		anzeige = new JTextArea("Holzliste \n");
		
		getContentPane().add(new JScrollPane(anzeige), BorderLayout.CENTER);

		JPanel unten = new JPanel(new GridLayout(1,2));
		speichern = new JButton("Speichern");
		speichern.addActionListener(this);
		unten.add(speichern);
		drucken = new JButton("Drucken");
		drucken.addActionListener(this);
		unten.add(drucken);

		getContentPane().add(unten, BorderLayout.SOUTH);

		setLocation(400,200);
		setSize(800, 500);	
		setVisible(true);
	}

	public void actionPerformed(ActionEvent e)
	{
		if(e.getActionCommand().equals("Speichern"))
		{
			if(idx<arr.length)
			{
				arr[idx][0] = längeAnzeige.getText();
				arr[idx][1] = durchmesserAnzeige.getText();
				arr[idx][2] = (String) klasseAnzeige.getSelectedItem();
				arr[idx][3] = (String) güteklasseAnzeige.getSelectedItem();
				anzeige.append("Baumnummer: " + (idx+1) + "\t Länge: " + arr[idx][0] + "\t Durchmesser: " + arr[idx][1] + "\t Klasse: " + arr[idx][2] + "\t Güteklasse: " + arr[idx][3] + "\n");
				idx++;
				nrAnzeige.setText(""+(idx+1));
			}
		}
		
		if(e.getActionCommand().equals("Drucken"))
		{
			try 
			{
				PrinterJob pjob = PrinterJob.getPrinterJob();
				 if ( pjob.printDialog() == false )
				      return;
				TextPrintable p = new TextPrintable();
				p.setText(anzeige);
				pjob.setPrintable(p);
				pjob.print();
			} 
			catch (PrinterException e1) 
			{
				e1.printStackTrace();
			}			
		}
	}

	public static void main(String[] args) 
	{
		@SuppressWarnings("unused")
		Holzliste f = new Holzliste();
	}

}
 

Boje

Mitglied
Das war die Lösung die ich gefunden habe.

Java:
class TextPrintable implements Printable 
{
	private JTextArea text;
	public int print(Graphics g, PageFormat pageFormat, int pageIndex) 
	{
		if(pageIndex > 0)
			return(NO_SUCH_PAGE);
		else
		{
			((Graphics2D) g).translate(pageFormat.getImageableX(), pageFormat.getImageableY());
			text.print(g);
			return Printable.PAGE_EXISTS;
		}

	}
	public void setText(JTextArea text) 
	{
		this.text = text;
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F 2D-Grafik JTextArea drucken bringt mieses Ergebnis AWT, Swing, JavaFX & SWT 2
T Drucken des Inhaltes einer JTextArea AWT, Swing, JavaFX & SWT 4
J JTextArea drucken AWT, Swing, JavaFX & SWT 4
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
I Rich Text drucken AWT, Swing, JavaFX & SWT 0
F JavaFX (Tree)TableView korrekt drucken AWT, Swing, JavaFX & SWT 1
J bestimmten Bereich eines JPanels drucken AWT, Swing, JavaFX & SWT 2
L Charset beim Drucken falsch AWT, Swing, JavaFX & SWT 2
Sugan JavaFX Bilder drucken AWT, Swing, JavaFX & SWT 0
O JTable linksbündig drucken (nicht der Zelleninhalt) AWT, Swing, JavaFX & SWT 2
M Swing PDF Datei nach drucken nicht löschbar AWT, Swing, JavaFX & SWT 6
F AWT Drucken verschluckt inhalt AWT, Swing, JavaFX & SWT 1
S JTable im Hoch- und Querformat angepasst drucken AWT, Swing, JavaFX & SWT 1
kaoZ JFrame Drucken AWT, Swing, JavaFX & SWT 8
Z Drucken AWT, Swing, JavaFX & SWT 2
A Swing Drucken eines JTextPanes AWT, Swing, JavaFX & SWT 7
M JTable Drucken NullpointerException +JTable speichern AWT, Swing, JavaFX & SWT 6
C Swing Drucken von JPanel AWT, Swing, JavaFX & SWT 14
E Drucken von JPanel mit richtiger Skalierung AWT, Swing, JavaFX & SWT 5
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
S AWT Drucken aus bestimmtem Papierfach AWT, Swing, JavaFX & SWT 7
S Probleme beim drucken AWT, Swing, JavaFX & SWT 13
M Swing JTable drucken/Darstellung AWT, Swing, JavaFX & SWT 2
D 2D-Grafik Problem beim Drucken eines Grafik-Objekts AWT, Swing, JavaFX & SWT 2
W AWT Drucken ohne Druckdialog AWT, Swing, JavaFX & SWT 2
O JTable mit Inhalt drucken AWT, Swing, JavaFX & SWT 3
C Swing Briefe/Dokumente zum Drucken erstellen AWT, Swing, JavaFX & SWT 20
D Drucken eines "Formulars" in abgeänderter Form AWT, Swing, JavaFX & SWT 5
P Jpanel mit Komponenten drucken AWT, Swing, JavaFX & SWT 3
T Drucken eines JFrame AWT, Swing, JavaFX & SWT 2
H AWT Oberer Seitenrand kann beim Drucken vom Anwender nicht verstellen werden. AWT, Swing, JavaFX & SWT 6
P Drucken von Jtextpane mit Seitenangabe AWT, Swing, JavaFX & SWT 1
A Probleme beim Drucken AWT, Swing, JavaFX & SWT 5
D Vorabberatung :) Briefe gestalten und drucken (als PDF) AWT, Swing, JavaFX & SWT 3
N Nur ein Element sichtbar beim Drucken eines JFrame AWT, Swing, JavaFX & SWT 9
A Probleme beim Drucken (Seite wird abgeschnitten) AWT, Swing, JavaFX & SWT 2
N JTable: Drucken mit größerer RowHeight AWT, Swing, JavaFX & SWT 2
N JPanel nicht ganz drucken AWT, Swing, JavaFX & SWT 2
A Probleme mit dem Drucken AWT, Swing, JavaFX & SWT 2
K Seite zum drucken einrichten AWT, Swing, JavaFX & SWT 2
F Drucken in Java AWT, Swing, JavaFX & SWT 3
A Problem mit der Seiteneinrichtung beim Drucken AWT, Swing, JavaFX & SWT 7
A Drucken einer JList AWT, Swing, JavaFX & SWT 4
C JTable drucken AWT, Swing, JavaFX & SWT 7
O Panel drucken AWT, Swing, JavaFX & SWT 2
Y Problem beim Drucken AWT, Swing, JavaFX & SWT 2
A Drucken AWT, Swing, JavaFX & SWT 23
H JTable drucken mit Header AWT, Swing, JavaFX & SWT 4
& XHTML drucken mit (oder ohne) Flying Saucer AWT, Swing, JavaFX & SWT 12
C Fenster rücken beim Drucken in den Hintergrund AWT, Swing, JavaFX & SWT 6
& mehrseitige HTML-Dokumente drucken AWT, Swing, JavaFX & SWT 2
ARadauer jtable drucken unter java 1.3 AWT, Swing, JavaFX & SWT 2
B Unsichtbares JPanel drucken. AWT, Swing, JavaFX & SWT 14
C Text drucken? AWT, Swing, JavaFX & SWT 2
V Drucken in Java AWT, Swing, JavaFX & SWT 2
K Drucken von JTextComponenten AWT, Swing, JavaFX & SWT 2
R Drucken unter jdk 1.4 mit JTable AWT, Swing, JavaFX & SWT 11
B Ein großes JTextPane komplett drucken AWT, Swing, JavaFX & SWT 2
I Drucken: Programm stürzt bei AWT, Swing, JavaFX & SWT 7
I Fensterinhalt drucken AWT, Swing, JavaFX & SWT 2
E Drucken von JComponent. AWT, Swing, JavaFX & SWT 4
F Transparent bzw. transfluent(durscheinend) drucken? AWT, Swing, JavaFX & SWT 2
P Idee zum drucken von JTextField und JTable AWT, Swing, JavaFX & SWT 2
O JTable, mehrere Spalten drucken AWT, Swing, JavaFX & SWT 4
orenishii mehrseitig Images anzeigen und drucken SimpleBook.java AWT, Swing, JavaFX & SWT 5
R JPanel drucken AWT, Swing, JavaFX & SWT 5
foobar JTable im Hintergrund drucken AWT, Swing, JavaFX & SWT 2
S Drucken - Bild skalieren AWT, Swing, JavaFX & SWT 2
S JAI und das praktische Drucken AWT, Swing, JavaFX & SWT 4
S Drucken AWT, Swing, JavaFX & SWT 15
S JTable - Drucken AWT, Swing, JavaFX & SWT 10
G HTML aus JEditorPane drucken AWT, Swing, JavaFX & SWT 2
G JPanel drucken AWT, Swing, JavaFX & SWT 2
B componente drucken AWT, Swing, JavaFX & SWT 3
M Ein Bild aus einem Panel drucken? AWT, Swing, JavaFX & SWT 11
G Frage zum Drucken AWT, Swing, JavaFX & SWT 2
V Problem beim drucken AWT, Swing, JavaFX & SWT 4
L swing komponenten Drucken AWT, Swing, JavaFX & SWT 7
G JTextPane drucken AWT, Swing, JavaFX & SWT 2
S Drucken eines Panels AWT, Swing, JavaFX & SWT 3
T JEditorPane-content drucken AWT, Swing, JavaFX & SWT 2
@ Erzeugen einer Maske zum drucken AWT, Swing, JavaFX & SWT 2
G Drucken?? AWT, Swing, JavaFX & SWT 4
H JTable drucken AWT, Swing, JavaFX & SWT 4
K JPanel drucken AWT, Swing, JavaFX & SWT 4
P JTable drucken AWT, Swing, JavaFX & SWT 2
B JPanel Drucken AWT, Swing, JavaFX & SWT 1
T Swing Mehrere Ausgaben in JTextArea AWT, Swing, JavaFX & SWT 2
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
RedEagle Swing JTextArea ist leer AWT, Swing, JavaFX & SWT 13
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
E wie in JScrollPane auf JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
K Swing 2 JTextArea parrallel scrollable AWT, Swing, JavaFX & SWT 16
Hatsi09 JTextArea Inhalt verlinken AWT, Swing, JavaFX & SWT 4
ralfb1105 jTextArea Scrollbar hinzufügen - mit Jigloo erstellt AWT, Swing, JavaFX & SWT 7
S Ausgabe in JTextArea AWT, Swing, JavaFX & SWT 13
H JTextArea - farbige Zeilen .. bitte um Vorschläge zur Implementierung AWT, Swing, JavaFX & SWT 1
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
Bluedaishi JTextArea gefundene Zeile nach Oben Scrollen AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen

Neue Themen


Oben