Drucken mit stiftUndCo

[Startseite]


Vorwort ] Voraussetzungen ] JAVA ] Implementierung von Klassen ] Erste Programme ] Klassenbibliothek ] Installation ] Applets ] Mehr JAVA ] Inside stiftUndCo ] Beispiele ] Downloads ]

Programmgesteuertes Zeichnen
Freihandzeichnen
Das Ballprojekt
Autorennen
Weitere Beispiele
Der Zug
n-Damen-Problem
Drucken mit stiftUndCo
Türme von Hanoi

Seit Einführung des Sprachstandards 1.1 von JAVA ist Drucken aus JAVA-Anwendungen heraus möglich. Sicherheitsbedenken verbieten dies jedoch für Applets. Die Druckfähigkeiten sind jedoch auch für Anwendungen noch recht einfach und schöpfen  die Auflösung der zur Verfügung stehenden Drucker nicht aus.

Um im Rahmen der Bibliothek stiftUndCo eine Druckmöglichkeit zu eröffnen, habe ich eine Klasse Blatt entworfen, deren Funktionalität weitgehend einem Bildschirm entspricht.   Die Klasse Blatt repräsentiert ein Papierblatt . Mit Hilfe von Stiften kann auf einem Blatt gezeichnet und geschrieben werden, genauso wie auf einem Bildschirm. Im Folgenden zeigt ein Beispiel, eine modifizierte Kochsche Kurve (s. auch als Applet), die Verwendung des Blattes. Im Anschluß werden die spezifischen Eigenheiten seiner Verwendung erläutert.

Beachten Sie bitte, dass die Klasse Blatt einen ersten Versuch darstellt, um die Druckmöglichkeiten in die Bibliothek einzubinden. Wenn Sie die Klasse ausprobieren wollen, müssen Sie eine Anwendung erstellen!

Quelltext der Kochschen Kurve mit Ausdruck:

import stiftUndCo.*;

// Kochsche Kurve

public class KochDruck {
	private Bildschirm bildschirm;
	private BuntStift stift,stift2;
	private Blatt blatt;
	private int rot,grün,blau;

	public static void main(String[] s)
	{
 		KochDruck druckeKoch = new KochDruck();
 		druckeKoch.los(5);	
		druckeKoch.gibFrei();
	}
	
	public void los(int n)	
	{
	 bildschirm = new Bildschirm();/* 1 */	
	 stift2=new BuntStift();
	 stift2.bewegeBis(10,50);
	 stift2.schreibe("Es wird eine Kochsche Kurve gedruckt");
	 blatt = new Blatt();/* 2 */	
	 stift = new BuntStift(blatt);/* 3 */
	 stift.bewegeBis (100,330);
	 stift.runter();
	 stift.dreheBis(60);
	 figur(n);
	 blatt.drucke();/* 4 */
	}

	private void grundfigur ( int n) 
	{
		if (n==1) 
		{ 
			stift.bewegeUm(3.5);
			rot=Hilfe.zufall(0,255);
			grün=Hilfe.zufall(0,255);
			blau=Hilfe.zufall(0,255);
			stift.setzeFarbe(Farbe.rgb(rot,grün,blau));
		} 
		else {
			grundfigur (n-1);
			if (n > 4) { figur(3); }
			stift.dreheUm (60);
			grundfigur (n-1);
			if (n>4) { figur(3); }
			stift.dreheUm (-120);
			grundfigur (n-1);
			if (n>4) { figur(3); }
			stift.dreheUm (60);
			grundfigur (n-1);
			if (n>4) { figur(3); }
		}
	}

	private void figur (int n) {
		for (int i=1;i<4;i++){
		grundfigur (n);
		stift.dreheUm(-120); 
		}
	}

	public void gibFrei()
	{
      if( stift != null)
	  { 
		  stift.gibFrei();
	  }
     if( blatt != null)
	  { 
		  blatt.gibFrei();		 
	  }
	}
}

Erläuterung:

Zunächst (s. /* 1 */) wird ein Bildschirm(!) erzeugt, danach ein Blatt(s. /* 2 */) . Bevor ein Blatt erzeugt wird, muß(!) ein Bildschirm vorhanden sein. In einem weiteren Schritt wird ein Stift generiert, der das Blatt kennenlernt (s. /* 3 */). Wenn die Zeichnung fertig ist, wird das Blatt gedruckt. (s. /* 4 */). Der Umgang mit dem Blatt unterscheidet sich kaum von dem Umgang mit dem Bildschirm. Sie könnten, abgesehen von Zeile /* 4 */ (blatt.drucke();), an Stelle eines Blattes einen Bildschirm im Programm benutzen.

Wenn Sie das Programm ausprobieren, werden Sie feststellen, dass Sie unmittelbar nach dem Start des Programms den üblichen Druckerdialog vor sich haben. Der Druckerdialog wird durch die Initialisierung des Blattes erzeugt und nicht durch die Nachricht drucke(). Die Gründe hierfür liegen in spezifischen Eigenheiten der Implementierung der Druckmöglichkeiten unter JAVA. Im Prinzip könnte das zwar geändert werden, es machte die Blatt-Implementierung jedoch wesentlich komplexer. Zu einem späteren Zeitpunkt, wenn entsprechende Erfahrungen mit dem Blatt vorliegen, kann eine Änderung erfolgen. Geben Sie bitte auch Ihre Wünsche und Erfahrungen an mich weiter.

 

 


Seitenanfang

© Georg Dick