Bibliotheken
Processing mit GUI
Die Abkürzung GUI steht für "Graphical User Interface". Die meisten Anwendungen haben eine solche GUI.
Ob Exel oder Photoshop, LibreOffice oder der hier benutzte Browser - alle bieten Eingabefelder, Buttons und
sonstige visuelle Komponenten.
Bei Processing muss man leider darauf verzichten, es sei denn, man verwendet die Library controlP5.
Im Kapitel One-Time-Pad mit Clifford Attraktor
haben wir einen Sketch erstellt, der ein Bild verschlüsselt. Man muss dazu 10 Paramter als Schlüssel eingeben.
Wohl oder übel müssen sie in den Quellcode eingegeben werden. Zudem funktioniert der Sketch nur, wenn man
den Processing Editor installiert hat. Wie man das ändern kann, wollen wir an diesem Beispiel zeigen.
So in etwa soll die GUI aussehen:
Um das zu erreichen, muss man die Library controlP5 importieren. Man kann das problemlos über den
Editor bewerkstelligen: Sketch/Library importieren/Manage Libraries.
Sobald das erledigt ist, ergänzen wir den Sketch um folgende Eintragungen:
import controlP5.*;
ControlP5 cp5;
String A1,B1,C1,D1,E1,Delta1;
String A2,B2,C2,D2,E2,Delta2;;
Textfield A1Textfield,B1Textfield,C1Textfield,D1Textfield,Delta1Textfield;
Textfield A2Textfield,B2Textfield,C2Textfield,D2Textfield,Delta2Textfield;
Button but1,but2,but3;
Im setup()-Teil muss man cp5 mit
cp5 = new ControlP5(this) intitialieren.
Die Strings benötigt man für die zehn
Textfields, auch "Editfelder" genannt. Der Sketch bestimmt
per random()-Funktion zehn Dezimalzahlen im angeforderten Bereich und trägt sie in die entsprechenden Felder ein.
Damit das klappt, muss man sie zuvor in Strings verwandeln. Da man für die Anwendung aber echte Zufallszahlen
benötigt, ändert man bei jeder Dezimalzahl einige Ziffern. Dies muss von der Anwendung bemerkt werden. Dazu
benutzt man die
controlEvent-Methode der Editfelder:
public void controlEvent(ControlEvent theEvent) {
    println(theEvent.getController().getName());
    println("geändert");//Kontrolle
}
Danach müssen die geänderten Inhalte wieder eingelesen werden. Das sieht am Beispiel des ersten Feldes A1 so aus:
a=float(A1Textfield.getText());
Ebenfalls im setup()-Teil legt man alle Control-Elemente an. Am Beispiel von Editfeld A1:
A1Textfield = cp5.addTextfield("a1")
    .setPosition(40,100+z)
    .setSize(150,40)
    .setFont(fontEdit)
    .setFocus(true)
    .setColor(color(255))
    .setText(A1);
    ;
Die y-Position enhält das Attribut z. Dieses verwenden wir, um alle Elemente mit dem gleichen Wert nach
unten zu verschieben. Den Focus sollte man nur einmal setzen. Hier willkürlich auf das erste Editfeld.
Der Rest ist selbsterklärend.
Die Menge aller Methoden, die man mit einem Control-Element verwenden kann, findet man im Ordner
libraries/controlP5/exemples in den jeweils verwendeten Beispielen.
Die Funktion der Buttons erläutern wir hier ebenfalls an einem Beispiel:
but1 = cp5.addButton("SchluesselBerechnen")
    .setPosition(40,20+z)
    .setSize(290,40)
    ;
but1.setLabel("Schlüssel berechnen");
Drückt man den Button, dann wird die Methode
void SchluesselBerechnen() ausgeführt.

Will man den Sketch ohne Processing-Editor zum laufen bringen, muss er exportiert werden.
Dazu wählt man Datei/Exportieren (Bild links). Den Haken beim gewünschten Betriebssystem setzen und
wenige Sekunden später hat man im Sketch Ordner mehrere Dateien inklusive einer exe-Datei (bei Windows).
Wundern Sie sich nicht, dass die Anwendung nun deutlich größer geworden ist. Das liegt daran, dass die
Laufzeitumgebung für das Betriebssystem mit abgespeichert wird.
Für Windows, auf demProcessing installiert ist, muss man das nicht unbedingt machen. Allerdings kann
es dann Probleme geben, wenn der Ort der JDK nicht gefunden wird. Also besser mit abspeichern!
Sketch Clifford XOR-Permutation Verschlüsselung
Menu