Programm druckt nicht alles

Eklaf

Mitglied
Hallo alle ich hab da ein kleines :rolleyes: Problem und hoffe ihr könnt mir helfen:D

Hier ist die druck klasse

Code:
package Hilfsklassen;

import java.awt.*;

public class AuswertungDrucken extends Frame
{
	Werte classWerte;
	
	public AuswertungDrucken(Werte p_Werte)
	{
		this.classWerte = p_Werte;
		
		PrintJob prjob = getToolkit().getPrintJob( this, "Auswertung Drucken", null );
		if( null != prjob )
		{
			final int iPageResol             = prjob.getPageResolution();
	    	Graphics g = prjob.getGraphics();
	    	
	    	if( null != g && 0 < iPageResol )
	    	{
	    		int iAddY = 20;
	    		int iRand = (int)Math.round( iPageResol * 2. / 2.54 );  // 2 cm Rand
	    		int iPosX = iRand + iRand/4;                            // Textposition
	    		int iPosY = iPosX - iAddY/2;
	    		g.setFont( new Font( "SansSerif", Font.PLAIN, iAddY*2/3 ) );
	    		
	    		for (int i=1;i<classWerte.get_iZaehlerZeilen();i++)
	    		{
	    			g.drawString(""+classWerte.get_ArrZeilen(i), iPosX, iPosY+=iAddY);
	    			System.out.println(i+".Zeile gedruckt");
	    		}
	    		
	    		g.drawString("Brennweite: "+classWerte.get_dBrennweite(), iPosX, iPosY+=iAddY);
	    		System.out.println("Brennweite gedruckt");
	    		
	    		for (int j=1;j<=classWerte.get_iZaehlerArray();j++)
	    		{
	    			g.drawString( 	"Name: "+classWerte.get_ArrNamePos(j), iPosX, iPosY+=iAddY );
	    			g.drawString(	"X Position: "+classWerte.get_ArrXPos(j), iPosX, iPosY+=iAddY );
	    			g.drawString(	"Y Position: "+classWerte.get_ArrYPos(j), iPosX, iPosY+=iAddY );
	    			g.drawString("", iPosX, iPosY+=iAddY);
	    			System.out.println(j+".Wert gedruckt");
	    		}
	      
	    		g.dispose();
	    	}
	    prjob.end();
	  }
	}
}

wenn sie ausgeführt wird druckt sie 37 zeilen und dann is schluss in dem ersten ArrayZeilen sind allerdings 57 Zeilen und dann kommen ja noch paar Sachen ;-) hat wer ne Idee warum er den rest nicht druckt laut Console durchläuft er alles richtig druckt es nur nicht und ich bekomme auch keine Fehlermeldungen
 
Ich würde sagen weil das Blatt voll ist.
Bevor du UNS jetzt fragst wie es richtig gemacht wird lies dir dazu bitte das Sun-Tutorial durch da wir hier nicht dazu da sind die bereits vorhandene Werke erneut wiederzugeben / zu übersetzen sondern aller höchstens um konkrete Fragen die sich auf etwas Beziehen versuchen zu beantworten. Und da dein Code so nicht compilbar ist können wir auch schlecht selber debuggen da wir dazu ein compilebares Beispiel bräuchten.
 
ne Blatt is nur halb voll und das ganze Programm hat mehrere Klassen kann das hier schlecht komplett reinstellen sonst wäre es brutal unübersichtlich wollte nur wissen ob prinzipiell was falsch ist
 
Wie gesagt : NICHT COMPILBARES BEISPIEL
Woher sollen wir denn wissen das z.B. deine classWerte.get_iZeahlerZeilen() nicht irgendwie falsche Werte liefert wenn wir nicht den kompletten Source zum selber debuggen haben ...
Ist es denn wirklich so schwer da einfach mal ein System.out.println() reinzusetzen und sich diesen Wert einfach mal ausgeben zu lassen ?
 
wenn sie ausgeführt wird druckt sie 37 zeilen und dann is schluss in dem ersten ArrayZeilen sind allerdings 57 Zeilen und dann kommen ja noch paar Sachen ;-) hat wer ne Idee warum er den rest nicht druckt laut Console durchläuft er alles richtig druckt es nur nicht und ich bekomme auch keine Fehlermeldungen

es sind mehrere System.out.println(); drin und die werte werden wie ich es oben schon mal geschrieben habe alle korrekt übergeben und laufen auch voll durch allerdings druckt er nur 37 Zeilen bis zur hälfte des blatts und dann is schluss.
 
Ich muss Spike im Grundsatz Recht geben, es ist schwer solche Fehler zu finden ohne selber ausprobieren zu können. Aber ich kann natürlich auch verstehen, dass du hier nicht einfach alles posten kannst. Daher möchte ich dir noch ein par Tipps zum Debuggen geben. Lass dir doch mal alternativ die Ausgabe nicht direkt auf die Graphics des PrinterJob zeichnen, sondern irgendwo anders drauf, z.B. ein BufferedImage mit der Größe einer DinA4-Seite. Dann kannst du schon herausfinden ob es wirklich am PrintJob selber liegt oder an deinen Anweisungen was auf die Graphics gemalt werden soll.
Sollte in dem BufferedImage genau das erscheinen was du wolltest kannst du auch vor dem Befehl zum Drucken einfach mal versuchen dir ausgeben zu lassen was bisher so im PrintJob drin ist um herauszufinden ob es an den Daten die im PrintJob gespeichert werden liegt, oder an der Übertragung zum Drucker.
 
Hallo,

laß dir mal per System.out.println nicht nur den Schleifenzähler sondern auch den String ausgeben, der gedruckt werden soll. (Also z. B. classWerte.get_ArrZeilen(i)).
Wenn dieser leer ist, sieht man natürlich auch nichts auf dem Papier.

MfG
hansmueller
 
Okay danke für die Tips ;) die Strings werden richtig abgerufen und übertragen das ist es nicht denke jetzt auch das die seite voll ist oder zu klein ist drum habe ich mal
Code:
Dimension d = pj.getPageDimension();
      System.out.println( "Weite : " + d.width + "\n" +"Höhe : " + d.height );

und bekomme die Weite: 595 und Höhe: 841 raus was der Relation des Ausdrucks entspricht. wie kann ich die dimension erhöhen oder gibt es da einen anderen trick?
 
Zurück