From 5af2d2b103fdbba5a597d72122f2f386c5f01242 Mon Sep 17 00:00:00 2001 From: Jan <janschubert93@web.de> Date: Thu, 5 Dec 2019 12:20:54 +0100 Subject: [PATCH] Kommentare und JavaDoc --- src/main/java/projekt/enigma/App.java | 25 +- src/main/java/projekt/enigma/Main.java | 6 +- .../java/projekt/enigma/model/Fehler.java | 15 +- .../java/projekt/enigma/model/Funkraum.java | 20 +- .../java/projekt/enigma/model/Hardware.java | 74 +- .../java/projekt/enigma/model/Morsecode.java | 28 +- .../java/projekt/enigma/model/Reflektor.java | 13 +- .../java/projekt/enigma/model/Steckbrett.java | 35 +- src/main/java/projekt/enigma/model/Walze.java | 61 +- src/main/resources/projekt/enigma/gui.fxml | 735 +++++++----------- 10 files changed, 430 insertions(+), 582 deletions(-) diff --git a/src/main/java/projekt/enigma/App.java b/src/main/java/projekt/enigma/App.java index c27ee29..553cceb 100644 --- a/src/main/java/projekt/enigma/App.java +++ b/src/main/java/projekt/enigma/App.java @@ -22,19 +22,19 @@ import java.io.IOException; public class App extends Application { /** - * Deklariert den GuiController + * Deklariert den GuiController. */ private static GuiController gc; /** - * debug : int : fuer die Funktion debug der Klasse Fehler notwendig + * debug : int : fuer die Funktion debug der Klasse Fehler notwendig. */ private static int debug; /** - * Startet die Klasse App und setzt den debug-Wert 1 + * Startet die Klasse App und setzt den debug-Wert 1. * - * @param args : String[] : Standard-Kommandozeilen-Argument + * @param args : String[] : Standard-Kommandozeilen-Argument. */ public static void main(String[] args) { debug = 1; @@ -42,20 +42,20 @@ public class App extends Application { } /** - * gibt der Getter einen int > 0 zurueck, wird eine Meldung auf der Konsole ausgegeben + * Gibt der Getter einen int > 0 zurueck, wird eine Meldung auf der Konsole ausgegeben. * - * @return debug : int : bestimmt die Eingabe der debung-Methode in der Klasse Fehler + * @return debug : int : bestimmt die Eingabe der debung-Methode in der Klasse Fehler. */ public static int getDebug() { return debug; } /** - * Initialisieren der Variablen fuer die JavaFX Scene Kenngruppe. + * Initialisierung der Variablen fuer die JavaFX Scene Kenngruppe. * Abfrage der Kenngruppe und Reaktion auf die Eingabe. * - * @param primaryStage : Stage : Fenster zur Eingabe der Kenngruppe - * @throws IOException : wird bei fehlerhafter Eingabe geworfen + * @param primaryStage : Stage : Fenster zur Eingabe der Kenngruppe. + * @throws IOException : wird bei fehlerhafter Eingabe geworfen. */ @Override public void start(Stage primaryStage) throws IOException { @@ -72,7 +72,7 @@ public class App extends Application { layout.getChildren().addAll(lblEingbae, tfEingabe, btnKenngruppe); Scene sceKenngruppe = new Scene(layout); - // laden der FXML und der Ansicht, um Ladezeiten zu verringern + // laden der FXML und der Enigma-Ansicht, um Ladezeiten zu verringern FXMLLoader guiLoader = new FXMLLoader(App.class.getResource("gui.fxml")); Scene sceApp = new Scene(guiLoader.load(), 962, 677); @@ -110,8 +110,8 @@ public class App extends Application { * Ueberprueft die Gueltigkeit der Kenngruppeneingabe. * Nur Zeichen von A-Z sind zugelassen und die Kenngruppe muss aus mind. 4 und max. 8 Zeichen bestehen. * - * @param kenngruppe : String : Eingabewert aus dem Fenster - * @return result : boolean : ist die Kenngruppe ungueltig wird false zurueckgegeben, sonst true + * @param kenngruppe : String : Eingabewert aus dem Fenster. + * @return result : boolean : ist die Kenngruppe ungueltig wird false zurueckgegeben, sonst true. */ private boolean enter(String kenngruppe) { String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; @@ -129,5 +129,4 @@ public class App extends Application { return result; } - } diff --git a/src/main/java/projekt/enigma/Main.java b/src/main/java/projekt/enigma/Main.java index e392797..3bb7c54 100644 --- a/src/main/java/projekt/enigma/Main.java +++ b/src/main/java/projekt/enigma/Main.java @@ -1,7 +1,5 @@ package projekt.enigma; -import java.sql.SQLException; - /** * Startpunkt des Programms. Startet die Klasse App und damit die GUI. */ @@ -10,9 +8,9 @@ public class Main { /** * Startet die App * - * @param args : String[] : Standard-Kommandozeilen-Parameter + * @param args : String[] : Standard-Kommandozeilen-Parameter. */ - public static void main(String[] args) throws SQLException { + public static void main(String[] args) { App.main(args); } } diff --git a/src/main/java/projekt/enigma/model/Fehler.java b/src/main/java/projekt/enigma/model/Fehler.java index 5625c5a..92a17ed 100644 --- a/src/main/java/projekt/enigma/model/Fehler.java +++ b/src/main/java/projekt/enigma/model/Fehler.java @@ -5,10 +5,12 @@ import javafx.scene.control.Alert.AlertType; import projekt.enigma.App; /** - * In dieser Klasse werden Fehler behandelt und an den User/Admin/Entwickler ausgegeben + * In dieser Klasse werden Fehler behandelt und an den User/Admin/Entwickler ausgegeben. */ public class Fehler { - + /** + * Konstanten die anzeigen ob es sich um eine Funktion oder um eine Nachricht handelt. + */ private static final String FUNCTION_PREFIX = "- "; private static final String MESSAGE_PREFIX = "--> "; @@ -23,7 +25,7 @@ public class Fehler { Alert alert; new Fehler().debug(this.getClass().getName() + "." - + new Throwable().getStackTrace()[0].getMethodName(), true); + + new Throwable().getStackTrace()[0].getMethodName(), true); /* Der Titel darf auch als leerer String uebergeben werden, dann wird ein Default gesetzt */ if (subject.equals("")) { @@ -61,7 +63,7 @@ public class Fehler { * Ueber diesen Getter kann man steuern ob Meldungen in der Konsole angezeigt werden sollen oder nicht. * * @param message : String : Nachricht - * @param isFunction : boolean : Gibt an ob ein Funktionsname übergeben wird oder eine Debug Meldung + * @param isFunction : boolean : Gibt an ob ein Funktionsname uebergeben wird oder eine Debug Meldung */ public void debug(String message, boolean isFunction) { if (App.getDebug() != 0) { @@ -74,15 +76,14 @@ public class Fehler { } /** - * Umter zuhilfenahme dieser Funktion koennen Debug Meldungen auf der Konsole ausgegeben werden, + * Unter Zuhilfenahme dieser Funktion koennen Debug Meldungen auf der Konsole ausgegeben werden, * wenn in der App.java der Getter getDebug einen int > 0 zurueck gibt. * Ueber diesen Getter kann man steuern ob Meldungen in der Konsole angezeigt werden sollen oder nicht. * * @param message : String : Nachricht - * @param isFunction : boolean : Gibt an ob ein Funktionsname übergeben wird oder eine Debug Meldung + * @param isFunction : boolean : Gibt an ob ein Funktionsname uebergeben wird oder eine Debug Meldung. */ public void debug(String message, boolean isFunction, int debugLevel) { - if (App.getDebug() != 0 && (App.getDebug() >= debugLevel || App.getDebug() == 3)) { if (isFunction) { System.out.println(FUNCTION_PREFIX + message); diff --git a/src/main/java/projekt/enigma/model/Funkraum.java b/src/main/java/projekt/enigma/model/Funkraum.java index e903f8c..13a298a 100644 --- a/src/main/java/projekt/enigma/model/Funkraum.java +++ b/src/main/java/projekt/enigma/model/Funkraum.java @@ -34,8 +34,8 @@ public class Funkraum { * * @param kenngruppe : String : Kenngruppe dieser Enigma * @return funkspruch : String[] : String Array wobei Index 0 dem Empfangstag entspricht und Index 1 - * der empfangenen Nachricht - * @throws NullPointerException : Exception : Keine Nachricht + * der empfangenen Nachricht. + * @throws NullPointerException : Exception : Keine Nachricht vorhanden. */ public String[] empfangeFunkspruch(String kenngruppe) { String[] funkspruch = new String[2]; @@ -49,7 +49,7 @@ public class Funkraum { params.add(new BasicNameValuePair("k", kenngruppe)); httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); - // POST Request ausführen und Rückgabe verarbeiten + // POST Request ausfuehren und Rueckgabe verarbeiten HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); @@ -80,13 +80,13 @@ public class Funkraum { * Dem Service senden wir unsere Nachricht als POST Parameter (m) und unsere Kenngruppe (k). * Dieser nimmt die Daten entgegen und hierlerlegt sie auf seinem Stapel (Datenbank) von dem die Nachrichten * irgendwann, auf Anfrage, wieder abgerufen werden koennen. - * <p> + * <br> * Darauf antwortet der Server mit einem JSON Object in dem das Ergebnis der Anfrage zu sehen ist. * {'result': 200} - * <p> - * Die 200 heißt hier, dass alles erfolgreich durchgefuehrt werden konnte. Steht hier etwas anderes, ist ein Fehler + * <br> + * Die 200 heisst hier, dass alles erfolgreich durchgefuehrt werden konnte. Steht hier etwas anderes, ist ein Fehler * aufgetreten und die Anfrage war nicht erfolgreich. - * In letzterem Fall sollte eine Meldung an den Benutzer ausgegeben werden und ggf spaeter erneut versucht werden. + * In letzterem Fall sollte eine Meldung an den Benutzer ausgegeben werden und ggf. spaeter erneut versucht werden. * * @param funkspruch : String : Der zu sendende Funkspruch * @param kenngruppe : String : Die Kenngruppe dieser Engima @@ -102,7 +102,7 @@ public class Funkraum { params.add(new BasicNameValuePair("m", funkspruch)); httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); - // POST Request ausführen und Rückgabe verarbeiten + // POST Request ausfuehren und Rueckgabe verarbeiten HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); @@ -111,8 +111,8 @@ public class Funkraum { JSONObject result = new JSONObject(reader.readLine()); if (result.getInt("result") != 200) { new Fehler().showErrorDialog("error", "HTTP Exception", - "Der andere Funker mag deine Nachricht nicht. " + - "Rüge ihn wenn du ihn wieder siehst..."); + "Der andere Funker mag deine Nachricht nicht. " + + "Rüge ihn wenn du ihn wieder siehst..."); } } } diff --git a/src/main/java/projekt/enigma/model/Hardware.java b/src/main/java/projekt/enigma/model/Hardware.java index 00e0d12..80bedb3 100644 --- a/src/main/java/projekt/enigma/model/Hardware.java +++ b/src/main/java/projekt/enigma/model/Hardware.java @@ -1,15 +1,15 @@ package projekt.enigma.model; /** - * In dieser Klasse wird die Hardware zusammen gefasst. - * Alle Komponenter der Enigma laufen hier zusammen. + * In dieser Klasse wird die Hardware zusammengefasst. + * Alle Komponenten der Enigma laufen hier zusammen. * * <p> * walzen : Walze[] : Ist ein Array der drei eingebauten Walzen Objekte * steckbrett : Steckbrett : Das Steckbrett mit den Verbindungen aus dem Codebuch * reflektor : Reflektor : Dies ist das Objekt der Reflektors - * nachricht : String : Die verschlüsselte Nachricht wird in diesem String zusammen gesetzt und gespeichert - * kenngruppe : String : Früher definierte die Kennzeichnung die Einheit welche diese Enigma benutzte. + * nachricht : String : Die verschluesselte Nachricht wird in diesem String zusammengesetzt und gespeichert + * kenngruppe : String : Frueher definierte die Kennzeichnung die Einheit welche diese Enigma benutzte. * Wir missbrauchen die Kenngruppe für einen Benutzernamen * </p> */ @@ -35,8 +35,8 @@ public class Hardware { //region Konstruktor /** - * Im Konstruktor legen wir die Anzahl der Walzen fest welche die Hardware aufnehmen kann. - * Die Enigma I welche hier nachgebildet werden soll, konnte drei Walzen aufnehmen. + * Im Konstruktor legen wir die Anzahl der Walzen fest, welche die Hardware aufnehmen kann. + * Die Enigma I, welche hier nachgebildet werden soll, konnte drei Walzen aufnehmen. */ public Hardware() { this.walzen = new Walze[3]; @@ -46,45 +46,47 @@ public class Hardware { //region Funktionen & Methoden /** - * Setzt eine Walze ein + * Setzt eine Walze ein. * - * @param walze : int : Setzt die Walze mit der angegebenen Nummer ein - * @param walzenNr : int : Die Nummer der einzusetzenden Walze + * @param walze : int : Setzt die Walze mit der angegebenen Nummer ein. + * @param walzenNr : int : Die Nummer der einzusetzenden Walze. + * @param ringstellung : int : Setzt den Ring der Walze auf die angegebene Nummer. */ public void setzeWalzenNr(int walze, int walzenNr, int ringstellung) { this.walzen[walze] = new Walze(walzenNr, ringstellung); } /** - * Setzt den Notch der Walze + * Setzt den Notch der Walze. * - * @param walze : int : Position der Walze - * @param position : int : Umspringpunkt auf der Walze + * @param walze : int : Position der Walze. + * @param position : int : Umspringpunkt auf der Walze. */ public void setzeRing(int walze, int position) { this.walzen[walze].setRingstellung(position); } /** - * Setzt den Startwert (position) der Walze (walze) + * Setzt den Startwert (position) der Walze (walze). * - * @param walze : int : Nummer der Walze - * @param buchstabe : char : Buchstabe der zugewiesen soll + * @param walze : int : Nummer der Walze. + * @param buchstabe : char : Buchstabe der zugewiesen werden soll. */ public void setzePosition(int walze, char buchstabe) { this.walzen[walze].setPosition(buchstabe); } /** - * Verschlüsselt den übergebenen Buchstaben und fügt ihn der Nachricht hinzu + * Verschluesselt den uebergebenen Buchstaben und fuegt ihn der Nachricht hinzu. + * Debug Ausgabe auf der Konsole wird zusaetzlich ausgegeben. * - * @param buchstabe char : Der zu ver/entschlüsselnde Buchstabe - * @return char : Der ver/entschlüsselte Buchstabe + * @param buchstabe char : Der zu ver/entschluesselnde Buchstabe. + * @return char : Der ver/entschluesselte Buchstabe. */ public char codiere(char buchstabe) { - new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true); + buchstabe = Character.toUpperCase(buchstabe); String debug = String.format("Positionen: W1:%s W2:%s W3:%s", this.walzen[0].getPosition(), @@ -94,6 +96,8 @@ public class Hardware { this.dreheWalzen(1); + //Codiere Vorgang wird fuer jede Walze bis zum Reflektor mit der codiere Funktion durchgefuehrt. + //Auf dem Rueckweg wird mit der codiere2 Funktion codiert. buchstabe = this.steckbrett.codiere(Character.toUpperCase(buchstabe)); debug += "\t" + buchstabe; buchstabe = this.walzen[2].codiere(buchstabe); @@ -118,8 +122,10 @@ public class Hardware { } /** - * Nach jeder codierung eines Buchstabens müssen die Walzen gedreht werden. - * Hier überprüfen wir welche der Walzen gedreht werden müssen und stoßen die Vorgang an. + * Nach jeder Codierung eines Buchstabens muessen die Walzen gedreht werden. + * Hier ueberpruefen wir, welche der Walzen gedreht werden muessen und stossen den Vorgang an. + * + * @param richtung : int : +1 fuer eine Vorwaertsdrehung und -1 fuer eine Rueckwaertsdrehung. */ public void dreheWalzen(int richtung) { if (richtung > 0) { @@ -145,29 +151,29 @@ public class Hardware { //region Setter /** - * Setzt eine Walze ein und speichert das Objekt im Walzen Array + * Setzt eine Walze ein und speichert das Objekt im Walzen Array. * - * @param position : int : Position der Walze - * @param walze : int : Die Nummer der Walze - * @param ringstellung : int : Umsprung Punkt der Walze + * @param position : int : Position der Walze. + * @param walze : int : Die Nummer der Walze. + * @param ringstellung : int : Umsprungpunkt der Walze. */ public void setWalzen(int position, int walze, int ringstellung) { this.walzen[position] = new Walze(walze, ringstellung); } /** - * Gibt das Objekt des Steckbretts zurück + * Gibt das Objekt des Steckbretts zurueck. * - * @return Steckbrett : Das eingesetzte Steckbrett mit seinen Kabeln wenn eingesteckt + * @return steckbrett : Steckbrett-Objekt: Das eingesetzte Steckbrett mit seinen Kabeln, wenn eingesteckt. */ public Steckbrett getSteckbrett() { return steckbrett; } /** - * Setzt das übergebene Steckbrett Objekt in die Hardware ein + * Setzt das uebergebene Steckbrett Objekt in die Hardware ein. * - * @param steckbrett : Steckbrett : Objekt des Steckbretts mit allen verbundenen Kabeln + * @param steckbrett : Steckbrett : Objekt des Steckbretts mit allen verbundenen Kabeln. */ public void setSteckbrett(Steckbrett steckbrett) { this.steckbrett = steckbrett; @@ -178,20 +184,20 @@ public class Hardware { /** * Setzt den Reflektor ein. - * In der Enigma I welche hier nachgebaut wird, gab es nur einen Reflektor. - * Spätere Versionen haten zwei oder mehr, deshalb haben wir hier auch schon ein Objekt dafür erstellt, + * In der Enigma I, welche hier nachgebaut wird, gab es nur einen Reflektor. + * Spaetere Versionen hatten zwei oder mehr, deshalb haben wir hier auch schon ein Objekt dafuer erstellt, * welches ausgetauscht werden kann. * - * @param reflektor : Reflektor : Das Obejtk des Reflektors + * @param reflektor : Reflektor : Das Objekt des Reflektors. */ public void setReflektor(Reflektor reflektor) { this.reflektor = reflektor; } /** - * Gibt die verbauten Walzen Objekte zurück + * Gibt die verbauten Walzen Objekte zurück. * - * @return Walze[] : Array mit den Walzen Objekten + * @return walzen : Walze[] : Array mit den Walzen Objekten. */ public Walze[] getWalzen() { return this.walzen; diff --git a/src/main/java/projekt/enigma/model/Morsecode.java b/src/main/java/projekt/enigma/model/Morsecode.java index bc3e56f..6b64354 100644 --- a/src/main/java/projekt/enigma/model/Morsecode.java +++ b/src/main/java/projekt/enigma/model/Morsecode.java @@ -10,7 +10,7 @@ import java.util.TreeMap; public class Morsecode { /** - * Anlegen der codeMap als TreeMap + * Anlegen der codeMap als TreeMap. */ private TreeMap<String, String> codeMap; @@ -63,8 +63,8 @@ public class Morsecode { * Diese Funktion ueberprueft ob der uebergebene Buchstabe in der codeMap enthalten ist. * Wenn er enthalten ist, wird der zugehoerige Morsecode zurueck gegeben, ansonsten null. * - * @param buchstabe : char : Zu uebersetzender Buchstabe - * @return String : Der zugehoerige Morsecode aus der codeMap + * @param buchstabe : char : Zu uebersetzender Buchstabe. + * @return String : Der zugehoerige Morsecode aus der codeMap. */ private String getMorsecode(char buchstabe) { return this.codeMap.getOrDefault(String.valueOf(buchstabe).toUpperCase(), null); @@ -72,13 +72,13 @@ public class Morsecode { /** * Der uebergebene String wird in seine einzelnen Zeichen (char) zerlegt und an die Funktion getMorsecode - * uebergeben und der zugehoerige Morsecode raus gesucht. - * Mittels eines StringBuilders werden die Ergebnisse zu einem Rückgabe String zusammen gesetzt. + * uebergeben und der zugehoerige Morsecode rausgesucht. + * Mittels eines StringBuilders werden die Ergebnisse zu einem Rueckgabe-String zusammengesetzt. * Wenn kein zugehoeriger Code in der codeMap gefunden wurde, wird das Zeichen ignoriert da es bei der * Enigma nicht vorhanden war. * - * @param input : String : Zu konvertierender Text - * @return String : Der in Morsecode konvertierte Text + * @param input : String : Zu konvertierender Text. + * @return String : Der in Morsecode konvertierte Text. */ public String convertBuchstabeToMorsecode(String input) { StringBuilder sb = new StringBuilder(); @@ -97,10 +97,10 @@ public class Morsecode { /** * Diese Funktion ueberprueft ob der uebergebene Morsecode in der codeMap enthalten ist. - * Wenn er enthalten ist, wird der zugehoerige Buchstabe zurueck gegeben, ansonsten null + * Wenn er enthalten ist, wird der zugehoerige Buchstabe zurueckgegeben, ansonsten null. * - * @param morsecode : String : Der zu uebersetzende Morsecode - * @return : String : Der zugehoerige Buchstabe aus der codeMap + * @param morsecode : String : Der zu uebersetzende Morsecode. + * @return : String : Der zugehoerige Buchstabe aus der codeMap. */ private String getBuchstabe(String morsecode) { String result = null; @@ -116,15 +116,15 @@ public class Morsecode { } /** - * Der uebergebene String wird in ein String Array zerlegt. Als Trennzeichen wird das Leerzeichen genutzt. + * Der uebergebene String wird in ein String-Array zerlegt. Als Trennzeichen wird das Leerzeichen genutzt. * Anschließend wird das Array durchlaufen und die Elemente an die Funktion getBuchstabe uebergeben um den * zugehoerigen Buchstaben zu erhalten. * Mittels eines StringBuilders werden die Ergebnisse zu einem Rueckgabe String zusammengesetzt. - * Wenn kein zugehoeriger Buchstabe in der codeMap gefunden wurde, wird das Zeichen ignoriert da es bei der + * Wenn kein zugehoeriger Buchstabe in der codeMap gefunden wurde, wird das Zeichen ignoriert, da es bei der * Enigma nicht vorhanden war. * - * @param input : String : Zu konvertierender Morsecode - * @return String : Der in Text konvertierte Morsecode + * @param input : String : Zu konvertierender Morsecode. + * @return String : Der in Text konvertierte Morsecode. */ public String convertMorsecodeToBuchstabe(String input) { StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/projekt/enigma/model/Reflektor.java b/src/main/java/projekt/enigma/model/Reflektor.java index 2e44b40..bafa846 100644 --- a/src/main/java/projekt/enigma/model/Reflektor.java +++ b/src/main/java/projekt/enigma/model/Reflektor.java @@ -3,10 +3,10 @@ package projekt.enigma.model; /** * Klasse Reflektor * <br> - * Der Reflektor nimmt einen Buchstaben der Klasse Walze entgegen und und codiert diesen. - * Der codierte Buchstabe wird an die Klasse Walze wieder zurückgegeben. + * Der Reflektor nimmt einen Buchstaben der Klasse Walze entgegen und codiert diesen. + * Der codierte Buchstabe wird an die Klasse Walze wieder zurueckgegeben. * <br> - * Prinzipiell verhaelt sich die Klasse Reflektor wie die Klasse Walze, außer das sie sich + * Prinzipiell verhaelt sich die Klasse Reflektor wie die Klasse Walze, ausser das sie sich * nach Betaetigung einer Taste nicht dreht (quasi starr montiert ist) und sie gibt keine Signale * an andere Walzen zum Drehen. */ @@ -18,14 +18,11 @@ public class Reflektor { * Durchsucht den String alphabet nach der Position des mitgegebenen Buchstabens und * gibt den Character an der entsprechenden Position im String reflektor zurueck. * - * @return char : Der codierte Buchstabe aus dem Reflektor + * @param buchstabe : Character : der zu codierende Buchstabe. + * @return char : Der codierte Buchstabe aus dem Reflektor. */ public char codiere(Character buchstabe) { - - // alphabet : String mit den Werten des Alphabeths (26 Werte) String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - - // reflektor : String mit den Werten des Reflektors (26 Werte) String reflektor = "EJMZALYXVBWFCRQUONTSPIKHGD"; return reflektor.charAt(alphabet.indexOf(buchstabe)); diff --git a/src/main/java/projekt/enigma/model/Steckbrett.java b/src/main/java/projekt/enigma/model/Steckbrett.java index 727973d..97674ab 100644 --- a/src/main/java/projekt/enigma/model/Steckbrett.java +++ b/src/main/java/projekt/enigma/model/Steckbrett.java @@ -4,27 +4,26 @@ package projekt.enigma.model; * <p> * Klasse Steckbrett * <br> - * Das Steckbrett diente dazu Buchstaben paarweise zu vertauschen noch bevor diese durch die Walzen codiert werden. + * Das Steckbrett diente dazu, Buchstaben paarweise zu vertauschen noch bevor diese durch die Walzen codiert werden. * Die Klasse Steckbrett nimmt bis zu 10 paarweise zu vertauschende Buchstabenpaare entgegen, prueft diese auf * Zulaessigkeit und tauscht diese dann paarweise aus. */ public class Steckbrett { /** - * orginalBuchstaben: String : der jeweils den ersten zu vertauschenden Buchstaben enthaelt + * orginalBuchstaben: String : der jeweils den ersten zu vertauschenden Buchstaben enthaelt. */ private String originalBuchstaben; /** - * getauschteBuchstaben: String : der jeweils den zweiten zu vertauschenden Buchstaben enthaelt + * getauschteBuchstaben: String : der jeweils den zweiten zu vertauschenden Buchstaben enthaelt. */ private String getauschteBuchstaben; - /** * Konstruktor Steckbrett * <br> - * Erzeugt zwei Strings und initialisiert diese mit einer leeren Menge. + * Erzeugt zwei Strings und initialisiert diese. */ public Steckbrett() { originalBuchstaben = ""; @@ -37,15 +36,15 @@ public class Steckbrett { * Der Funktion setzeVertauschung werden 2 Buchstaben (buchstabe1 und buchstabe2) uebergeben. * Zuerst wird ueberprueft ob einer der beiden Buchstaben bereits enthalten ist, was unzulaessig waere. * <br> - * Anschließend wird: + * Anschliessend wird: * <p> * buchstabe1 dem String orginalBuchstaben angehaengt. - * buchstabe2 dem String getauschteBuchstaben angehaengt. + * buchstabe2 dem String getauschteBuchstaben angehaengt. * </p> * * @param buchstabe1 : char : Gibt den ersten Buchstaben an, der getauscht werden soll. * @param buchstabe2 : char : gibt den zweiten Buchstaben an, mit dem der erste getauscht werden soll. - * @return boolean : Wenn die Vertauschung zulaessig ist, true, ansonsten false + * @return boolean : Wenn die Vertauschung zulaessig ist, true, ansonsten false. */ public boolean setzeVertauschung(char buchstabe1, char buchstabe2) { if ((!ueberpruefeVertauschungen(buchstabe1)) && (!ueberpruefeVertauschungen(buchstabe2)) @@ -64,20 +63,21 @@ public class Steckbrett { * Der Funktion setzeVertauschung werden 2 Buchstaben (buchstabe1 und buchstabe2) sowie der Port uebergeben. * Zuerst wird ueberprueft ob einer der beiden Buchstaben bereits enthalten ist, was unzulaessig waere. * <br> - * Anschließend wird: + * Anschliessend wird: * <p> - * buchstabe1 in den String orginalBuchstaben auf die Position (steckbrettPorts) geschrieben + * buchstabe1 in den String orginalBuchstaben auf die Position (steckbrettPort) geschrieben. * buchstabe2 in den String getauschteBuchstaben auf die Position (steckbrettPort) geschrieben. * </p> * * @param buchstabe1 : char: Gibt den ersten Buchstaben an, der getauscht werden soll. * @param buchstabe2 : char: gibt den zweiten Buchstaben an, mit dem der erste getauscht werden soll. - * @return boolean : Wenn die Vertauschung zulässig ist, true, ansonsten false + * @return boolean : Wenn die Vertauschung zulaessig ist, true, ansonsten false. */ public boolean setzeVertauschung(int steckbrettPort, char buchstabe1, char buchstabe2) { if (!ueberpruefeVertauschungen(buchstabe1) && !ueberpruefeVertauschungen(buchstabe2)) { originalBuchstaben = originalBuchstaben.replace(originalBuchstaben.charAt(steckbrettPort), buchstabe1); - getauschteBuchstaben = getauschteBuchstaben.replace(getauschteBuchstaben.charAt(steckbrettPort), buchstabe2); + getauschteBuchstaben + = getauschteBuchstaben.replace(getauschteBuchstaben.charAt(steckbrettPort), buchstabe2); return true; } else { return false; @@ -87,13 +87,14 @@ public class Steckbrett { /** * Funktion ueberpruefeVertauschungen * <br> - * Die Funktion ueberpruefeVertauschungen prueft ob der uebergebene Buchstabe bereits in den beiden Strings + * Die Funktion ueberpruefeVertauschungen prueft, ob der uebergebene Buchstabe bereits in den beiden Strings * orginalBuchstaben und getauschteBuchstaben vorhanden ist. * Eine Buchstabenvertauschung ist zulaessig, wenn keine Dopplungen der zu vertauschenden Buchstaben auftritt * (ein Buchstabe nicht mehrmals vertauscht wird). * + * @param buchstabe : Character: zu pruefender Buchstabe. * @return result : boolean : Wenn false, dann darf der Buchstabe genutzt werden. Wenn er schon vorhanden ist, - * wird true zurueck gegeben + * wird true zurueckgegeben. */ public boolean ueberpruefeVertauschungen(Character buchstabe) { boolean result = false; @@ -125,10 +126,10 @@ public class Steckbrett { } /** - * Tauscht die Buchstaben im Alphabet aus und gibt ein modifiziertes Alphabet zurueck + * Tauscht die Buchstaben im Alphabet aus und gibt ein modifiziertes Alphabet zurueck. * - * @param port : int : Platz der getauschten Buchstaben - * @return alphabet : String : Alphabet mit getauschen Buchstabenpaaren + * @param port : int : Platz der getauschten Buchstaben. + * @return alphabet : String : Alphabet mit getauschtem Buchstabenpaar. */ public String fetchVerfuegbareBuchstaben(int port) { String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; diff --git a/src/main/java/projekt/enigma/model/Walze.java b/src/main/java/projekt/enigma/model/Walze.java index eebb0ff..52ddceb 100644 --- a/src/main/java/projekt/enigma/model/Walze.java +++ b/src/main/java/projekt/enigma/model/Walze.java @@ -5,34 +5,38 @@ package projekt.enigma.model; * <br> * Erzeugt ein Objekt des Typs Walze mit den Eigenschaften: * <br> - * 1. Walzennummer (Die Walze enthaelt die 26 Buchstaben des Alphabeths und codiert diese. - * fuenf verschiedene Walzen stehen zur Auswahl, die jeweils verschieden die Buchstaben des Alphabeths - * vertauschen) + * 1. Walzennummer (Die Walze enthaelt die 26 Buchstaben des Alphabets und codiert diese. + * Fuenf verschiedene Walzen stehen zur Auswahl, die jeweils verschieden die Buchstaben des Alphabets + * vertauschen). * <br> * 2. Ringstellung (Umspringpunkt der Walze wird festgelegt. Der Umspringpunkt bestimmt - * den Drehzeitpunkt der linken Nachbarwalze.) + * den Drehzeitpunkt der linken Nachbarwalze). */ public class Walze { //region Variablen /** - * Die Anzahl der getaetigten Walzen Drehungen + * Die Anzahl der getaetigten Walzendrehungen. */ private int turns; + /** - * Das String Array aller bekannter aktueller Walzen + * Das String-Array aller bekannter aktueller Walzen. */ private String[] walzen; + /** - * alphabet : String : enthaelt die Buchstaben des Alphabets + * alphabet : String : enthaelt die Buchstaben des Alphabets. */ private String alphabet; + /** - * ringstellung : char : zeigt die Einstellung fuer den Umspringpunkt + * ringstellung : char : zeigt die Einstellung fuer den Umspringpunkt. */ private char ringstellung; + /** - * walzenNr : int : Bestimmt, welche Walze genutzt wird + * walzenNr : int : Bestimmt, welche Walze genutzt wird. */ private int walzenNr; @@ -40,10 +44,10 @@ public class Walze { //region Konstruktor /** - * Ueberschriebener Konstruktor, der die Eingangsparameter der Walze mit gibt + * Ueberschriebener Konstruktor, der die Eingangsparameter der Walze mit gibt. * - * @param walzenNr : int : Nummer der gewaehlten Walze - * @param ringstellung : int : Einstellung des Umsprungpunktes + * @param walzenNr : int : Nummer der gewaehlten Walze. + * @param ringstellung : int : Einstellung des Umsprungpunktes. */ public Walze(int walzenNr, int ringstellung) { this.walzen = new String[5]; @@ -67,8 +71,8 @@ public class Walze { * <p> * Ueberprueft, ob der Umspringpunkt der Walze nach der Drehung erreicht wurde. * - * @param richtung : int : 1 dreht die Walze weiter und -1 dreht sie einen Schritt zurueck - * @return checkRing : boolean : gibt true zurueck wenn der Umspringpunkt erreicht wurde + * @param richtung : int : 1 dreht die Walze weiter und -1 dreht sie einen Schritt zurueck. + * @return checkRing : boolean : gibt true zurueck, wenn der Umspringpunkt erreicht wurde. */ boolean dreheWalze(int richtung) { boolean checkRing = false; @@ -93,10 +97,10 @@ public class Walze { } /** - * Codiert den mitgegebenen Buchstaben anhand er gewaehlten Walze. + * Codiert den mitgegebenen Buchstaben anhand der gewaehlten Walze. * - * @param buchstabe : char : Buchstabe, der verschluesselt werden soll - * @return char : verschluesselter Buchstabe + * @param buchstabe : char : Buchstabe, der verschluesselt werden soll. + * @return char : verschluesselter Buchstabe. */ public char codiere(char buchstabe) { return this.fetchWalze().charAt((this.alphabet.indexOf(buchstabe) + this.turns) % 26); @@ -105,15 +109,15 @@ public class Walze { /** * Decodiert den mitgegebenen Buchstaben anhand des Alphabets. * - * @param buchstabe : char : Buchstabe, der decodiert werden soll - * @return char : decodierter Buchstabe + * @param buchstabe : char : Buchstabe, der decodiert werden soll. + * @return char : decodierter Buchstabe. */ char codiere2(char buchstabe) { return this.alphabet.charAt((this.fetchWalze().indexOf(buchstabe) - this.turns + 260) % 26); } /** - * @return String : Gibt den Verschluesselunngsstring der ausgewaehlten Walze zurueck. + * @return String : Gibt den Verschluesselungs-String der ausgewaehlten Walze zurueck. */ private String fetchWalze() { return walzen[walzenNr]; @@ -123,10 +127,11 @@ public class Walze { //region Setter /** - * Setzt die Walzennummer. Es stehen fuenf Walze zur Auswahl. + * Setzt die Walzennummer. Es stehen fuenf Walzen zur Auswahl. * - * @param walzenNr : int : Walzennummer + * @param walzenNr : int : Walzennummer. */ + //TODO: Überprüfung notwendig? Wo findet Überprüfung statt? private void setWalzenNr(int walzenNr) { if ((walzenNr > 0) && (walzenNr < 6)) { this.walzenNr = walzenNr - 1; @@ -142,7 +147,7 @@ public class Walze { * Die Ringstellung wird zum char umgewandelt. * Im Fehlerfall wird die Ringstellung standardmaessig auf 'Z' gesetzt. * - * @param ringstellung : int : Punkt an dem die Nachbarwalze umspringt + * @param ringstellung : int : Punkt an dem die Nachbarwalze umspringt. */ void setRingstellung(int ringstellung) { if ((ringstellung > 0) && (ringstellung <= 26)) { @@ -156,7 +161,7 @@ public class Walze { * Stellt die Grundeinstellung der Walze ein. * Ermittelt, wie oft die Walze gedreht werden muss, bis die Grundeinstellung erreicht ist. * - * @param buchstabe : Character : Einstellung der Walze + * @param buchstabe : Character : Einstellung der Walze. */ void setPosition(Character buchstabe) { this.turns = alphabet.indexOf(buchstabe); @@ -165,14 +170,18 @@ public class Walze { //region Getter /** - * Gibt den Buchstabe zurueck, der aktuell in der Walze eingestellt ist. + * Gibt den Buchstaben zurueck, der aktuell in der Walze eingestellt ist. * - * @return char : Ermittelte stelle im Alphabet, anhand der aktuellen Anzahl der Drehungen + * @return char : Ermittelte Stelle im Alphabet, anhand der aktuellen Anzahl der Drehungen. */ Character getPosition() { return this.alphabet.charAt(turns % 26); } + /** + * Getter der Walzennummer. + * @return walzenNr : int : gibt Walzennummer zurueck. + */ int getWalzenNr() { return this.walzenNr; } diff --git a/src/main/resources/projekt/enigma/gui.fxml b/src/main/resources/projekt/enigma/gui.fxml index 403956b..112562e 100644 --- a/src/main/resources/projekt/enigma/gui.fxml +++ b/src/main/resources/projekt/enigma/gui.fxml @@ -1,814 +1,651 @@ <?xml version="1.0" encoding="UTF-8"?> -<?import javafx.geometry.*?> -<?import javafx.scene.control.*?> -<?import javafx.scene.layout.*?> -<?import javafx.scene.shape.*?> -<?import javafx.scene.text.*?> -<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="677.0" - prefWidth="962.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" - fx:controller="projekt.enigma.GuiController"> - <GridPane layoutX="23.0" layoutY="60.0" prefHeight="158.0" prefWidth="237.0" AnchorPane.leftAnchor="23.0" - AnchorPane.topAnchor="60.0"> +<?import javafx.geometry.Insets?> +<?import javafx.scene.control.Button?> +<?import javafx.scene.control.Label?> +<?import javafx.scene.control.MenuButton?> +<?import javafx.scene.control.ProgressIndicator?> +<?import javafx.scene.control.TextField?> +<?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.layout.ColumnConstraints?> +<?import javafx.scene.layout.GridPane?> +<?import javafx.scene.layout.Pane?> +<?import javafx.scene.layout.RowConstraints?> +<?import javafx.scene.shape.Circle?> +<?import javafx.scene.text.Font?> + +<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="677.0" prefWidth="962.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="projekt.enigma.GuiController"> + <GridPane layoutX="23.0" layoutY="60.0" prefHeight="158.0" prefWidth="237.0" AnchorPane.leftAnchor="23.0" AnchorPane.topAnchor="60.0"> <columnConstraints> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> </columnConstraints> <rowConstraints> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> </rowConstraints> - <Label text="Walze"/> - <Label text="Ringe" GridPane.rowIndex="1"/> - <Label text="Position" GridPane.rowIndex="2"/> - <MenuButton fx:id="mBtnWalzPos1" alignment="CENTER_RIGHT" contentDisplay="CENTER" - mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" - GridPane.columnIndex="1"> + <Label text="Walze" /> + <Label text="Ringe" GridPane.rowIndex="1" /> + <Label text="Position" GridPane.rowIndex="2" /> + <MenuButton fx:id="mBtnWalzPos1" alignment="CENTER_RIGHT" contentDisplay="CENTER" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" GridPane.columnIndex="1"> </MenuButton> - <MenuButton fx:id="mBtnWalzPos2" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" - prefWidth="48.0" text="I" textAlignment="CENTER" GridPane.columnIndex="2"> + <MenuButton fx:id="mBtnWalzPos2" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" textAlignment="CENTER" GridPane.columnIndex="2"> </MenuButton> - <MenuButton fx:id="mBtnWalzPos3" mnemonicParsing="false" popupSide="TOP" prefHeight="25.0" - prefWidth="48.0" text="I" textAlignment="CENTER" GridPane.columnIndex="3"> + <MenuButton fx:id="mBtnWalzPos3" mnemonicParsing="false" popupSide="TOP" prefHeight="25.0" prefWidth="48.0" text="I" textAlignment="CENTER" GridPane.columnIndex="3"> </MenuButton> - <MenuButton fx:id="mBtnNotchPos1" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" - prefWidth="48.0" text="1" textAlignment="CENTER" GridPane.columnIndex="1" - GridPane.rowIndex="1"/> - <MenuButton fx:id="mBtnNotchPos2" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" - prefWidth="48.0" text="1" textAlignment="CENTER" GridPane.columnIndex="2" - GridPane.rowIndex="1"> + <MenuButton fx:id="mBtnNotchPos1" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER" GridPane.columnIndex="1" GridPane.rowIndex="1" /> + <MenuButton fx:id="mBtnNotchPos2" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER" GridPane.columnIndex="2" GridPane.rowIndex="1"> </MenuButton> - <MenuButton fx:id="mBtnNotchPos3" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" - prefWidth="48.0" text="1" textAlignment="CENTER" GridPane.columnIndex="3" - GridPane.rowIndex="1"> + <MenuButton fx:id="mBtnNotchPos3" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER" GridPane.columnIndex="3" GridPane.rowIndex="1"> </MenuButton> - <MenuButton fx:id="mBtnStartPos1" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" - prefWidth="48.0" text="A" textAlignment="CENTER" GridPane.columnIndex="1" - GridPane.rowIndex="2"> + <MenuButton fx:id="mBtnStartPos1" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER" GridPane.columnIndex="1" GridPane.rowIndex="2"> </MenuButton> - <MenuButton fx:id="mBtnStartPos2" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" - prefWidth="48.0" text="A" textAlignment="CENTER" GridPane.columnIndex="2" - GridPane.rowIndex="2"> + <MenuButton fx:id="mBtnStartPos2" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER" GridPane.columnIndex="2" GridPane.rowIndex="2"> </MenuButton> - <MenuButton fx:id="mBtnStartPos3" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" - prefWidth="48.0" text="A" textAlignment="CENTER" GridPane.columnIndex="3" - GridPane.rowIndex="2"> + <MenuButton fx:id="mBtnStartPos3" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER" GridPane.columnIndex="3" GridPane.rowIndex="2"> </MenuButton> </GridPane> - <GridPane layoutX="23.0" layoutY="222.0" prefHeight="60.0" prefWidth="270.0" AnchorPane.leftAnchor="23.0" - AnchorPane.topAnchor="222.0"> + <GridPane layoutX="23.0" layoutY="222.0" prefHeight="60.0" prefWidth="270.0" AnchorPane.leftAnchor="23.0" AnchorPane.topAnchor="222.0"> <columnConstraints> - <ColumnConstraints hgrow="SOMETIMES" maxWidth="206.0" minWidth="10.0" prefWidth="102.0"/> - <ColumnConstraints hgrow="SOMETIMES" maxWidth="224.0" minWidth="10.0" prefWidth="168.0"/> + <ColumnConstraints hgrow="SOMETIMES" maxWidth="206.0" minWidth="10.0" prefWidth="102.0" /> + <ColumnConstraints hgrow="SOMETIMES" maxWidth="224.0" minWidth="10.0" prefWidth="168.0" /> </columnConstraints> <rowConstraints> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> </rowConstraints> - <Label alignment="CENTER_RIGHT"/> - <Label text="Spruchschlüssel:"/> - <Label fx:id="lblSpruchschluessel" prefHeight="17.0" prefWidth="181.0" GridPane.columnIndex="1"/> - <Button fx:id="btnReset" mnemonicParsing="false" onAction="#gedrueckteTaste" text="Zurücksetzen" - GridPane.rowIndex="1"/> + <Label alignment="CENTER_RIGHT" /> + <Label text="Spruchschlüssel:" /> + <Label fx:id="lblSpruchschluessel" prefHeight="17.0" prefWidth="181.0" GridPane.columnIndex="1" /> + <Button fx:id="btnReset" mnemonicParsing="false" onAction="#gedrueckteTaste" text="Zurücksetzen" GridPane.rowIndex="1" /> </GridPane> - <GridPane fx:id="mainGrid" layoutX="6.0" layoutY="294.0" prefHeight="377.0" prefWidth="952.0" - AnchorPane.bottomAnchor="6.0" AnchorPane.leftAnchor="6.0" AnchorPane.rightAnchor="9.0" - AnchorPane.topAnchor="294.0"> + <GridPane fx:id="mainGrid" layoutX="6.0" layoutY="294.0" prefHeight="377.0" prefWidth="952.0" AnchorPane.bottomAnchor="6.0" AnchorPane.leftAnchor="6.0" AnchorPane.rightAnchor="9.0" AnchorPane.topAnchor="294.0"> <columnConstraints> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> </columnConstraints> <rowConstraints> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> </rowConstraints> - <Button fx:id="btnA" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="A" textFill="#fffdfd" - GridPane.columnIndex="2" GridPane.rowIndex="5"> + <Button fx:id="btnA" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="A" textFill="#fffdfd" GridPane.columnIndex="2" GridPane.rowIndex="5"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnP" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="P" textFill="#fffdfd" - GridPane.columnIndex="1" GridPane.rowIndex="6"> + <Button fx:id="btnP" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="P" textFill="#fffdfd" GridPane.columnIndex="1" GridPane.rowIndex="6"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnY" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Y" textFill="#fffdfd" - GridPane.columnIndex="2" GridPane.rowIndex="6"> + <Button fx:id="btnY" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Y" textFill="#fffdfd" GridPane.columnIndex="2" GridPane.rowIndex="6"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnX" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="X" textFill="#fffdfd" - GridPane.columnIndex="3" GridPane.rowIndex="6"> + <Button fx:id="btnX" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="X" textFill="#fffdfd" GridPane.columnIndex="3" GridPane.rowIndex="6"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnC" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="C" textFill="#fffdfd" - GridPane.columnIndex="4" GridPane.rowIndex="6"> + <Button fx:id="btnC" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="C" textFill="#fffdfd" GridPane.columnIndex="4" GridPane.rowIndex="6"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnV" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="V" textFill="#fffdfd" - GridPane.columnIndex="5" GridPane.rowIndex="6"> + <Button fx:id="btnV" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="V" textFill="#fffdfd" GridPane.columnIndex="5" GridPane.rowIndex="6"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnB" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="B" textFill="#fffdfd" - GridPane.columnIndex="6" GridPane.rowIndex="6"> + <Button fx:id="btnB" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="B" textFill="#fffdfd" GridPane.columnIndex="6" GridPane.rowIndex="6"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnN" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="N" textFill="#fffdfd" - GridPane.columnIndex="7" GridPane.rowIndex="6"> + <Button fx:id="btnN" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="N" textFill="#fffdfd" GridPane.columnIndex="7" GridPane.rowIndex="6"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnM" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="M" textFill="#fffdfd" - GridPane.columnIndex="8" GridPane.rowIndex="6"> + <Button fx:id="btnM" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="M" textFill="#fffdfd" GridPane.columnIndex="8" GridPane.rowIndex="6"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnL" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="L" textFill="#fffdfd" - GridPane.columnIndex="9" GridPane.rowIndex="6"> + <Button fx:id="btnL" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="L" textFill="#fffdfd" GridPane.columnIndex="9" GridPane.rowIndex="6"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnS" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="S" textFill="#fffdfd" - GridPane.columnIndex="3" GridPane.rowIndex="5"> + <Button fx:id="btnS" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="S" textFill="#fffdfd" GridPane.columnIndex="3" GridPane.rowIndex="5"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnD" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="D" textFill="#fffdfd" - GridPane.columnIndex="4" GridPane.rowIndex="5"> + <Button fx:id="btnD" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="D" textFill="#fffdfd" GridPane.columnIndex="4" GridPane.rowIndex="5"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnF" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="F" textFill="#fffdfd" - GridPane.columnIndex="5" GridPane.rowIndex="5"> + <Button fx:id="btnF" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="F" textFill="#fffdfd" GridPane.columnIndex="5" GridPane.rowIndex="5"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnG" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="G" textFill="#fffdfd" - GridPane.columnIndex="6" GridPane.rowIndex="5"> + <Button fx:id="btnG" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="G" textFill="#fffdfd" GridPane.columnIndex="6" GridPane.rowIndex="5"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnH" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="H" textFill="#fffdfd" - GridPane.columnIndex="7" GridPane.rowIndex="5"> + <Button fx:id="btnH" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="H" textFill="#fffdfd" GridPane.columnIndex="7" GridPane.rowIndex="5"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnJ" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="J" textFill="#fffdfd" - GridPane.columnIndex="8" GridPane.rowIndex="5"> + <Button fx:id="btnJ" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="J" textFill="#fffdfd" GridPane.columnIndex="8" GridPane.rowIndex="5"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnK" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="K" textFill="#fffdfd" - GridPane.columnIndex="9" GridPane.rowIndex="5"> + <Button fx:id="btnK" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="K" textFill="#fffdfd" GridPane.columnIndex="9" GridPane.rowIndex="5"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnQ" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Q" textFill="#fffdfd" - GridPane.columnIndex="1" GridPane.rowIndex="4"> + <Button fx:id="btnQ" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Q" textFill="#fffdfd" GridPane.columnIndex="1" GridPane.rowIndex="4"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnW" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="W" textFill="#fffdfd" - GridPane.columnIndex="2" GridPane.rowIndex="4"> + <Button fx:id="btnW" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="W" textFill="#fffdfd" GridPane.columnIndex="2" GridPane.rowIndex="4"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnE" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="E" textFill="#fffdfd" - GridPane.columnIndex="3" GridPane.rowIndex="4"> + <Button fx:id="btnE" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="E" textFill="#fffdfd" GridPane.columnIndex="3" GridPane.rowIndex="4"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnR" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="R" textFill="#fffdfd" - GridPane.columnIndex="4" GridPane.rowIndex="4"> + <Button fx:id="btnR" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="R" textFill="#fffdfd" GridPane.columnIndex="4" GridPane.rowIndex="4"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnT" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="T" textFill="#fffdfd" - GridPane.columnIndex="5" GridPane.rowIndex="4"> + <Button fx:id="btnT" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="T" textFill="#fffdfd" GridPane.columnIndex="5" GridPane.rowIndex="4"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnZ" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Z" textFill="#fffdfd" - GridPane.columnIndex="6" GridPane.rowIndex="4"> + <Button fx:id="btnZ" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Z" textFill="#fffdfd" GridPane.columnIndex="6" GridPane.rowIndex="4"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnU" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="U" textFill="#fffdfd" - GridPane.columnIndex="7" GridPane.rowIndex="4"> + <Button fx:id="btnU" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="U" textFill="#fffdfd" GridPane.columnIndex="7" GridPane.rowIndex="4"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnI" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="I" textFill="#fffdfd" - GridPane.columnIndex="8" GridPane.rowIndex="4"> + <Button fx:id="btnI" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="I" textFill="#fffdfd" GridPane.columnIndex="8" GridPane.rowIndex="4"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnO" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" - onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="O" textFill="#fffdfd" - GridPane.columnIndex="9" GridPane.rowIndex="4"> + <Button fx:id="btnO" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="O" textFill="#fffdfd" GridPane.columnIndex="9" GridPane.rowIndex="4"> <font> - <Font name="System Bold" size="18.0"/> + <Font name="System Bold" size="18.0" /> </font> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Button> - <Button fx:id="btnDelete" minHeight="35.0" mnemonicParsing="false" onAction="#gedrueckteTaste" - prefHeight="43.0" prefWidth="45.0" - style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="<" - textFill="#fffdfd" GridPane.columnIndex="10" GridPane.rowIndex="5"> + <Button fx:id="btnDelete" minHeight="35.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="<" textFill="#fffdfd" GridPane.columnIndex="10" GridPane.rowIndex="5"> <font> - <Font size="18.0"/> + <Font size="18.0" /> </font> </Button> - <Circle fx:id="circQ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="1"> + <Circle fx:id="circQ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="1"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circP" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="1" GridPane.rowIndex="2"> + <Circle fx:id="circP" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="1" GridPane.rowIndex="2"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circY" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="2" GridPane.rowIndex="2"> + <Circle fx:id="circY" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" GridPane.rowIndex="2"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circA" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="2" GridPane.rowIndex="1"/> - <Circle fx:id="circS" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="3" GridPane.rowIndex="1"/> - <Circle fx:id="circX" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="3" GridPane.rowIndex="2"> + <Circle fx:id="circA" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" GridPane.rowIndex="1" /> + <Circle fx:id="circS" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" GridPane.rowIndex="1" /> + <Circle fx:id="circX" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" GridPane.rowIndex="2"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circW" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="2"> + <Circle fx:id="circW" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circE" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="3"> + <Circle fx:id="circE" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circD" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="4" GridPane.rowIndex="1"/> - <Circle fx:id="circC" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="4" GridPane.rowIndex="2"> + <Circle fx:id="circD" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4" GridPane.rowIndex="1" /> + <Circle fx:id="circC" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4" GridPane.rowIndex="2"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circV" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="5" GridPane.rowIndex="2"> + <Circle fx:id="circV" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="2"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circB" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="6" GridPane.rowIndex="2"> + <Circle fx:id="circB" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="2"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circN" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="7" GridPane.rowIndex="2"> + <Circle fx:id="circN" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" GridPane.rowIndex="2"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circM" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="8" GridPane.rowIndex="2"> + <Circle fx:id="circM" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" GridPane.rowIndex="2"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circL" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="9" GridPane.rowIndex="2"> + <Circle fx:id="circL" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9" GridPane.rowIndex="2"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circF" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="5" GridPane.rowIndex="1"/> - <Circle fx:id="circG" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="6" GridPane.rowIndex="1"/> - <Circle fx:id="circH" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="7" GridPane.rowIndex="1"/> - <Circle fx:id="circJ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="8" GridPane.rowIndex="1"/> - <Circle fx:id="circK" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="9" GridPane.rowIndex="1"/> - <Circle fx:id="circR" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="4"> - <GridPane.margin> - <Insets left="34.0"/> + <Circle fx:id="circF" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="1" /> + <Circle fx:id="circG" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="1" /> + <Circle fx:id="circH" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" GridPane.rowIndex="1" /> + <Circle fx:id="circJ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" GridPane.rowIndex="1" /> + <Circle fx:id="circK" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9" GridPane.rowIndex="1" /> + <Circle fx:id="circR" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4"> + <GridPane.margin> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circT" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="5"> + <Circle fx:id="circT" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circZ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="6"> + <Circle fx:id="circZ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circU" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="7"> + <Circle fx:id="circU" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circI" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="8"> + <Circle fx:id="circI" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circO" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" - GridPane.columnIndex="9"> + <Circle fx:id="circO" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9"> <GridPane.margin> - <Insets left="34.0"/> + <Insets left="34.0" /> </GridPane.margin> </Circle> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="L" - GridPane.columnIndex="9" GridPane.rowIndex="2"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="L" GridPane.columnIndex="9" GridPane.rowIndex="2"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="5.0" left="42.0"/> + <Insets bottom="5.0" left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="M" - GridPane.columnIndex="8" GridPane.rowIndex="2"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="M" GridPane.columnIndex="8" GridPane.rowIndex="2"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="5.0" left="42.0"/> + <Insets bottom="5.0" left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="N" - GridPane.columnIndex="7" GridPane.rowIndex="2"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="N" GridPane.columnIndex="7" GridPane.rowIndex="2"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="5.0" left="42.0"/> + <Insets bottom="5.0" left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="B" - GridPane.columnIndex="6" GridPane.rowIndex="2"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="B" GridPane.columnIndex="6" GridPane.rowIndex="2"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="5.0" left="42.0"/> + <Insets bottom="5.0" left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="V" - GridPane.columnIndex="5" GridPane.rowIndex="2"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="V" GridPane.columnIndex="5" GridPane.rowIndex="2"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="5.0" left="42.0"/> + <Insets bottom="5.0" left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="C" - GridPane.columnIndex="4" GridPane.rowIndex="2"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="C" GridPane.columnIndex="4" GridPane.rowIndex="2"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="5.0" left="42.0"/> + <Insets bottom="5.0" left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="X" - GridPane.columnIndex="3" GridPane.rowIndex="2"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="X" GridPane.columnIndex="3" GridPane.rowIndex="2"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="5.0" left="42.0"/> + <Insets bottom="5.0" left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="Y" - GridPane.columnIndex="2" GridPane.rowIndex="2"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="Y" GridPane.columnIndex="2" GridPane.rowIndex="2"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="5.0" left="41.0"/> + <Insets bottom="5.0" left="41.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="P" - GridPane.columnIndex="1" GridPane.rowIndex="2"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="P" GridPane.columnIndex="1" GridPane.rowIndex="2"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="5.0" left="42.0"/> + <Insets bottom="5.0" left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="K" - GridPane.columnIndex="9" GridPane.rowIndex="1"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="K" GridPane.columnIndex="9" GridPane.rowIndex="1"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="2.0" left="7.0"/> + <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="J" - GridPane.columnIndex="8" GridPane.rowIndex="1"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="J" GridPane.columnIndex="8" GridPane.rowIndex="1"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="2.0" left="7.0"/> + <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="27.0" prefWidth="25.0" text="H" - GridPane.columnIndex="7" GridPane.rowIndex="1"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="27.0" prefWidth="25.0" text="H" GridPane.columnIndex="7" GridPane.rowIndex="1"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="4.0" left="9.0"/> + <Insets bottom="4.0" left="9.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="G" - GridPane.columnIndex="6" GridPane.rowIndex="1"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="G" GridPane.columnIndex="6" GridPane.rowIndex="1"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="2.0" left="7.0"/> + <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="F" - GridPane.columnIndex="5" GridPane.rowIndex="1"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="F" GridPane.columnIndex="5" GridPane.rowIndex="1"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="2.0" left="7.0"/> + <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="D" - GridPane.columnIndex="4" GridPane.rowIndex="1"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="D" GridPane.columnIndex="4" GridPane.rowIndex="1"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="2.0" left="7.0"/> + <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="S" - GridPane.columnIndex="3" GridPane.rowIndex="1"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="S" GridPane.columnIndex="3" GridPane.rowIndex="1"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="2.0" left="7.0"/> + <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="A" - GridPane.columnIndex="2" GridPane.rowIndex="1"> + <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="A" GridPane.columnIndex="2" GridPane.rowIndex="1"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets bottom="2.0" left="7.0"/> + <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="O" - textAlignment="CENTER" GridPane.columnIndex="9"> + <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="O" textAlignment="CENTER" GridPane.columnIndex="9"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets left="42.0"/> + <Insets left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="I" - textAlignment="CENTER" GridPane.columnIndex="8"> + <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="I" textAlignment="CENTER" GridPane.columnIndex="8"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets left="42.0"/> + <Insets left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="U" - textAlignment="CENTER" GridPane.columnIndex="7"> + <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="U" textAlignment="CENTER" GridPane.columnIndex="7"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets left="42.0"/> + <Insets left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Z" - textAlignment="CENTER" GridPane.columnIndex="6"> + <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Z" textAlignment="CENTER" GridPane.columnIndex="6"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets left="42.0"/> + <Insets left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="T" - textAlignment="CENTER" GridPane.columnIndex="5"> + <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="T" textAlignment="CENTER" GridPane.columnIndex="5"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets left="42.0"/> + <Insets left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="R" - textAlignment="CENTER" GridPane.columnIndex="4"> + <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="R" textAlignment="CENTER" GridPane.columnIndex="4"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets left="42.0"/> + <Insets left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="E" - textAlignment="CENTER" GridPane.columnIndex="3"> + <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="E" textAlignment="CENTER" GridPane.columnIndex="3"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets left="42.0"/> + <Insets left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" prefHeight="36.0" prefWidth="30.0" text="W" - GridPane.columnIndex="2"> + <Label alignment="CENTER" prefHeight="36.0" prefWidth="30.0" text="W" GridPane.columnIndex="2"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets left="42.0"/> + <Insets left="42.0" /> </GridPane.margin> </Label> - <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Q" - GridPane.columnIndex="1"> + <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Q" GridPane.columnIndex="1"> <font> - <Font size="23.0"/> + <Font size="23.0" /> </font> <GridPane.margin> - <Insets left="42.0"/> + <Insets left="42.0" /> </GridPane.margin> </Label> <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="7"> - <Pane fx:id="portPane0" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" - style="-fx-background-color: lightgrey;" visible="false"/> + <Pane fx:id="portPane0" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> </Pane> <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="7"> - <Pane fx:id="portPane1" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" - style="-fx-background-color: lightgrey;" visible="false"/> + <Pane fx:id="portPane1" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> </Pane> <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3" GridPane.rowIndex="7"> - <Pane fx:id="portPane2" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" - style="-fx-background-color: lightgrey;" visible="false"/> + <Pane fx:id="portPane2" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> </Pane> <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="4" GridPane.rowIndex="7"> - <Pane fx:id="portPane3" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" - style="-fx-background-color: lightgrey;" visible="false"/> + <Pane fx:id="portPane3" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> </Pane> <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="5" GridPane.rowIndex="7"> - <Pane fx:id="portPane4" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" - style="-fx-background-color: lightgrey;" visible="false"/> + <Pane fx:id="portPane4" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> </Pane> <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="6" GridPane.rowIndex="7"> - <Pane fx:id="portPane5" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" - style="-fx-background-color: lightgrey;" visible="false"/> + <Pane fx:id="portPane5" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> </Pane> <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="7" GridPane.rowIndex="7"> - <Pane fx:id="portPane6" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" - style="-fx-background-color: lightgrey;" visible="false"/> + <Pane fx:id="portPane6" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> </Pane> <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="8" GridPane.rowIndex="7"> - <Pane fx:id="portPane7" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" - style="-fx-background-color: lightgrey;" visible="false"/> + <Pane fx:id="portPane7" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> </Pane> <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="9" GridPane.rowIndex="7"> - <Pane fx:id="portPane8" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" - style="-fx-background-color: lightgrey;" visible="false"/> + <Pane fx:id="portPane8" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> </Pane> <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="10" GridPane.rowIndex="7"> - <Pane fx:id="portPane9" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" - style="-fx-background-color: lightgrey;" visible="false"/> + <Pane fx:id="portPane9" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> </Pane> </GridPane> - <GridPane layoutX="297.0" layoutY="64.0" prefHeight="168.0" prefWidth="585.0"> + <GridPane layoutX="297.0" layoutY="64.0" prefHeight="168.0" prefWidth="585.0" AnchorPane.leftAnchor="297.0" AnchorPane.rightAnchor="80.0" AnchorPane.topAnchor="64.0"> <columnConstraints> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> </columnConstraints> <rowConstraints> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> </rowConstraints> <TextField fx:id="tfKlartext" editable="false" prefHeight="70.0" prefWidth="293.0"> <GridPane.margin> - <Insets/> + <Insets /> </GridPane.margin> </TextField> - <TextField fx:id="tfCodiert" editable="false" prefHeight="70.0" prefWidth="293.0" - GridPane.rowIndex="1"/> - <Button fx:id="btnSenden" alignment="CENTER" contentDisplay="RIGHT" mnemonicParsing="false" - onAction="#gedrueckteTaste" prefHeight="70.0" prefWidth="195.0" text="An Funker senden" - textAlignment="CENTER" GridPane.columnIndex="1"> + <TextField fx:id="tfCodiert" editable="false" prefHeight="70.0" prefWidth="293.0" GridPane.rowIndex="1" /> + <Button fx:id="btnSenden" alignment="CENTER" contentDisplay="RIGHT" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="70.0" prefWidth="195.0" text="An Funker senden" textAlignment="CENTER" GridPane.columnIndex="1"> <GridPane.margin> - <Insets left="80.0"/> + <Insets left="80.0" /> </GridPane.margin> </Button> - <Button fx:id="btnEmpfangen" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="70.0" - prefWidth="195.0" text="Funkspruch empfangen" GridPane.columnIndex="1" GridPane.rowIndex="1"> + <Button fx:id="btnEmpfangen" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="70.0" prefWidth="195.0" text="Funkspruch empfangen" GridPane.columnIndex="1" GridPane.rowIndex="1"> <GridPane.margin> - <Insets left="80.0"/> + <Insets left="80.0" /> </GridPane.margin> </Button> </GridPane> - <Label fx:id="lblKenngruppe" layoutX="682.0" layoutY="34.0" prefHeight="17.0" prefWidth="177.0"/> - <Pane layoutX="266.0" layoutY="194.0" prefHeight="200.0" prefWidth="354.0" - style="-fx-background-color: white; -fx-border-color: black;" visible="false"> - <ProgressIndicator layoutX="127.0" layoutY="70.0" prefHeight="99.0" - prefWidth="101.0"/> + <Label fx:id="lblKenngruppe" layoutX="682.0" layoutY="34.0" prefHeight="17.0" prefWidth="177.0" AnchorPane.leftAnchor="682.0" AnchorPane.rightAnchor="103.0" AnchorPane.topAnchor="34.0" /> + <Pane layoutX="266.0" layoutY="194.0" prefHeight="200.0" prefWidth="354.0" style="-fx-background-color: white; -fx-border-color: black;" visible="false"> + <ProgressIndicator layoutX="127.0" layoutY="70.0" prefHeight="99.0" prefWidth="101.0" /> <Label layoutX="79.0" layoutY="27.0" text="Kommunikation mit Funkraum..."> <font> - <Font size="14.0"/> + <Font size="14.0" /> </font> </Label> </Pane> -- GitLab