diff --git a/src/main/java/projekt/enigma/GuiController.java b/src/main/java/projekt/enigma/GuiController.java index 4e2a1a3652740e0e2128baa8ab00c9bda8d0ef13..2e06eb606adf45ee66b00bde2d46fae7ef84a6b4 100644 --- a/src/main/java/projekt/enigma/GuiController.java +++ b/src/main/java/projekt/enigma/GuiController.java @@ -22,301 +22,307 @@ public class GuiController { private Codierer codierer; @FXML - private Button btnL; + private TextField tfStecker1; @FXML - private Button btnP; + private TextField tfStecker2; @FXML - private Button btnY; + private TextField tfStecker3; @FXML - private Button btnX; + private TextField tfStecker4; @FXML - private Button btnC; + private TextField tfStecker5; @FXML - private Button btnV; + private TextField tfStecker6; @FXML - private Button btnB; + private TextField tfStecker7; @FXML - private Button btnN; + private TextField tfStecker8; + + @FXML + private TextField tfStecker9; + + @FXML + private TextField tfStecker10; @FXML private Button btnM; @FXML - private Button btnA; + private Button btnN; @FXML - private Button btnS; + private Button btnB; @FXML - private Button btnD; + private Button btnV; @FXML - private Button btnF; + private Button btnC; @FXML - private Button btnG; + private Button btnX; @FXML - private Button btnH; + private Button btnY; @FXML - private Button btnJ; + private Button btnP; @FXML - private Button btnK; + private Button btnL; @FXML - private Button btnQ; + private Button btnK; @FXML - private Button btnW; + private Button btnJ; @FXML - private Button btnE; + private Button btnH; @FXML - private Button btnR; + private Button btnG; @FXML - private Button btnT; + private Button btnF; @FXML - private Button btnZ; + private Button btnD; @FXML - private Button btnU; + private Button btnS; @FXML - private Button btnI; + private Button btnA; @FXML private Button btnO; @FXML - private MenuButton mBtnWalzPos1; + private Button btnI; @FXML - private MenuButton mBtnWalzPos3; + private Button btnU; @FXML - private MenuButton mBtnWalzPos2; + private Button btnZ; @FXML - private MenuButton mBtnNotchPos3; + private Button btnT; @FXML - private MenuButton mBtnNotchPos2; + private Button btnR; @FXML - private MenuButton mBtnStartPos1; + private Button btnE; @FXML - private MenuButton mBtnStartPos3; + private Button btnW; @FXML - private MenuButton mBtnStartPos2; + private Button btnQ; @FXML - private TextField tfKlartext; + private Circle circL; @FXML - private TextField tfCodiert; + private Circle circM; @FXML - private MenuButton mBtnNotchPos1; + private Circle circN; @FXML - private TextField tfStecker1; + private Circle circB; @FXML - private TextField tfStecker2; + private Circle circV; @FXML - private TextField tfStecker3; + private Circle circC; @FXML - private TextField tfStecker4; + private Circle circX; @FXML - private TextField tfStecker5; + private Circle circY; @FXML - private TextField tfStecker6; + private Circle circP; @FXML - private TextField tfStecker7; + private Circle circK; @FXML - private TextField tfStecker8; + private Circle circJ; @FXML - private TextField tfStecker9; + private Circle circH; @FXML - private TextField tfStecker10; + private Circle circG; @FXML - private Label lblQ; + private Circle circF; @FXML - private Label lblE; + private Circle circD; @FXML - private Label lblW; + private Circle circS; @FXML - private Label lblR; + private Circle circA; @FXML - private Label lblT; + private Circle circO; @FXML - private Label lblZ; + private Circle circI; @FXML - private Label lblO; + private Circle circU; @FXML - private Label lblI; + private Circle circZ; @FXML - private Label lblU; + private Circle circT; @FXML - private Label lblA; + private Circle circR; @FXML - private Label lblD; + private Circle circE; @FXML - private Label lblS; + private Circle circW; @FXML - private Label lblF; + private Circle circQ; @FXML - private Label lblG; + private Label lblL; @FXML - private Label lblH; + private Label lblM; @FXML - private Label lblK; + private Label lblN; @FXML - private Label lblJ; + private Label lblB; @FXML - private Label lblP; + private Label lblV; @FXML - private Label lblX; + private Label lblC; @FXML - private Label lblY; + private Label lblX; @FXML - private Label lblC; + private Label lblY; @FXML - private Label lblV; + private Label lblP; @FXML - private Label lblB; + private Label lblK; @FXML - private Label lblL; + private Label lblJ; @FXML - private Label lblM; + private Label lblH; @FXML - private Label lblN; + private Label lblG; @FXML - private Circle circE; + private Label lblF; @FXML - private Circle circR; + private Label lblD; @FXML - private Circle circT; + private Label lblS; @FXML - private Circle circZ; + private Label lblA; @FXML - private Circle circU; + private Label lblQ; @FXML - private Circle circI; + private Label lblW; @FXML - private Circle circO; + private Label lblE; @FXML - private Circle circA; + private Label lblR; @FXML - private Circle circS; + private Label lblT; @FXML - private Circle circD; + private Label lblZ; @FXML - private Circle circF; + private Label lblU; @FXML - private Circle circG; + private Label lblI; @FXML - private Circle circH; + private Label lblO; @FXML - private Circle circJ; + private TextField tfCodiert; @FXML - private Circle circK; + private TextField tfKlartext; @FXML - private Circle circP; + private ProgressBar pbLadeNachricht; @FXML - private Circle circY; + private MenuButton mBtnWalzPos1; @FXML - private Circle circX; + private MenuButton mBtnWalzPos2; @FXML - private Circle circC; + private MenuButton mBtnWalzPos3; @FXML - private Circle circV; + private MenuButton mBtnNotchPos1; @FXML - private Circle circB; + private MenuButton mBtnNotchPos2; @FXML - private Circle circN; + private MenuButton mBtnNotchPos3; @FXML - private Circle circM; + private MenuButton mBtnStartPos1; @FXML - private Circle circL; + private MenuButton mBtnStartPos2; @FXML - private Circle circW; + private MenuButton mBtnStartPos3; @FXML - private Circle circQ; + private Label lblLadeNachricht; @FXML void initialize() { diff --git a/src/main/java/projekt/enigma/model/Codebuch.java b/src/main/java/projekt/enigma/model/Codebuch.java index aacb58c97a1dfad19a89cd97cb8fe963aecf5371..9ded525e6d41617d76f148556b5c8f278bb88a63 100644 --- a/src/main/java/projekt/enigma/model/Codebuch.java +++ b/src/main/java/projekt/enigma/model/Codebuch.java @@ -7,7 +7,7 @@ import java.time.ZoneId; /** * Das Codebuch war eines der essentiel wichtigen Sachen bei der Enigma. - * Jeder Enigma gehörte auch ein Codebuch bei, welches notwenidg war um die Nachrichten zu ver/entschlüsseln. + * Jeder Enigma gehörte auch ein Codebuch bei, welches notwendig war um die Nachrichten zu ver/entschlüsseln. * Im Codebuch standen für jeden Tag des Monats die notwendigen Einstellungen welche vorgenommen werden * mussten um die Texte zu ver/entschlüsseln. * Hiernach wurden die Walzen eingesetzt, die Ringe für den Rücksprung der Walze gesetzt und deren Grundeinstellung @@ -22,22 +22,36 @@ import java.time.ZoneId; * geben kann. */ public class Codebuch { + /** - * TODO: Dokumentieren + * TODO: Dokumentieren tag + * tag : int : gibt den Tag an */ private int tag; + + /** + * walzenlage : int[] : legt die Positionen der Walzen fest + */ private int[] walzenlage; + + /** + * ringstellung : int[] : TODO ringstellung: char || int ? + */ private int[] ringstellung; + + /** + * steckverbindung : char[][] : stellt die Steckverbindungen im Steckbrett dar + */ private char[][] steckverbindung; /** - * Im Konstruktor werden die Standart Werte gesetzt + * Im Konstruktor werden die Standardwerte gesetzt * <p> * walzenlage : int[3] : Hier wird die Position der drei Walzen festgelegt. * ringstellung : char[3] : Jede Walze hat einen Ring. Der Index steht für die Walze und der Value für * die Position des Ringes. * steckverbindung : char[10][] : Zehn Kabel können in das Steckbrett gesteckt werden. In diesem Array werden - * die Kabel mit ihren jeweiligen Buchsen hinterlegt. + * die Kabel mit ihren jeweiligen Buchsen hinterlegt. */ public Codebuch() { this.walzenlage = new int[3]; @@ -53,12 +67,16 @@ public class Codebuch { /** * TODO: Dokumentieren - * @param tag + * Holt den Tagesschluessel aus dem Codebuch ab. Ist kein Tag angegeben, wird der aktuelle Tag genutzt. + * Aus dem Tagesschluessel werden die Werte fuer die Walzenlage, Ringstellung und Steckverbindung + * gesetzt. + * + * @param tag : int[] : gibt einen Tag oder mehrere Tage mit */ public void fetchTagesschluessel(int... tag) { String[] walzenlage, ringstellung, db; - if(tag.length > 0) { + if (tag.length > 0) { db = new DatenbankSqlite().getCodebuch(tag[0]); } else { db = new DatenbankSqlite().getCodebuch(LocalDate.now(ZoneId.of("Europe/Berlin")).getDayOfMonth()); @@ -82,7 +100,7 @@ public class Codebuch { /** * Gibt die aktuelle Instanz des Codebuches als String zurück. - * Hierbei werden der Tag die Walzenlagen, Ring/Grundstellung sowie die Steckverbindungen zurück gegeben. + * Hierbei werden der Tag die Walzenlagen, Ring-/Grundstellung sowie die Steckverbindungen zurück gegeben. * * @return String : String des gesamten Objektes */ @@ -138,16 +156,14 @@ public class Codebuch { /** * Setzt den Tag dieser Instanz * - * @param tag : int + * @param tag : int : Tag */ - void setTag(int tag) { - this.tag = tag; - } + void setTag(int tag) { this.tag = tag; } /** * Gibt die Walzenlage dieser Instanz zurück * - * @return String[] : Walzenlage + * @return String[] : Walzenlage TODO: String[] || int[]? */ public int[] getWalzenlage() { return walzenlage; @@ -156,7 +172,7 @@ public class Codebuch { /** * Gibt die Ringstellung dieser Instanz zurück * - * @return String[] : Ringstellung + * @return String[] : Ringstellung TODO: String[] || int[]? */ public int[] getRingstellung() { return ringstellung; @@ -177,7 +193,7 @@ public class Codebuch { * * @param kabel : String[] : Die Steckverbindungen die gesteckt werden sollen. * Jeder Eintrag im Array ist ein String mit zwei Zeichen. - * Diese werden in zwei char zerlegt und anschließend im globalen + * Diese werden in zwei chars zerlegt und anschließend im globalen * Array gespeichert. */ private void setSteckverbindung(String[] kabel) { @@ -205,7 +221,7 @@ public class Codebuch { * Setzt die Ringstellung dieser Instanz * * @param position : int : Auf welche Walze wird der Ring aufgesetzt? - * @param ringstellung : char : An dieser Position soll die nächste Walze weiter gedreht werden. + * @param ringstellung : char : An dieser Position soll die nächste Walze weiter gedreht werden.TODO: String[] || int[]? */ private void setRingstellung(int position, int ringstellung) { this.ringstellung[position] = ringstellung; diff --git a/src/main/java/projekt/enigma/model/Walze.java b/src/main/java/projekt/enigma/model/Walze.java index 51648acc3c23be9b528764252ab92f672c3e74a5..51bf3a8b377e37edaa1e303a21409f0dea83c87f 100644 --- a/src/main/java/projekt/enigma/model/Walze.java +++ b/src/main/java/projekt/enigma/model/Walze.java @@ -2,246 +2,267 @@ package projekt.enigma.model; /** * Klasse Walze - * <p> + * <br> * Erzeugt ein Objekt des Typs Walze mit den Eigenschaften: - * <p> + * <br> * 1. Walzennummer (Die Walze enthält die 26 Buchstaben des Alphabeths und codiert diese. * 5 verschiedene Walzen stehen zur Auswahl, die jeweils verschieden die Buchstaben des Alphabeths * paarweise vertauschen) - * <p> + * <br> * 2. Ringstellung (Umspringpunkt der Walze wird festgelegt. Der Umspringpunkt bestimmt * den Drehzeitpunkt der linken Nachbarwalze) */ public class Walze { - /** - * Konstanten und Variablen der Klasse Walze - * <p> - * ringstellung : Bestimmt den Umspringpunkt der Walze - * walzennr : Bestimmt die Walzennr. (also wie der Buchstabe codiert wird) - */ - private Character[] walzeAlpha; - private char ringstellung; - private int walzennr; - private Character[] alphabet; - - - /** - * Gibt die Parameter der Walze mit - * - * @param walzennr : int : Nummer der gewaehlten Walze - * @param ringstellung : Character : Einstellung des Notch - */ - public Walze(int walzennr, int ringstellung) { - this.alphabet = new Character[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; - this.walzeAlpha = new Character[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; - - // Setzen der Walzennummer - this.setWalzennr(walzennr); - - // Setzen der Ringstellung - this.setRingstellung(ringstellung); - } - - /** - * Sortiert den Walzennummern das passenden Character-Array mittels switch zu. - * - * @return walze : Character[] : gibt die gewaehlte Walze zurueck - */ - private Character[] walzenNummer() { - - Character[] walze = new Character[26]; - Character[] walzeEins = {'E', 'K', 'M', 'F', 'L', 'G', 'D', 'Q', 'V', 'Z', 'N', 'T', 'O', 'W', 'Y', 'H', 'X', 'U', 'S', 'P', 'A', 'I', 'B', 'R', 'C', 'J'}; - Character[] walzeZwei = {'A', 'J', 'D', 'K', 'S', 'I', 'R', 'U', 'X', 'B', 'L', 'H', 'W', 'T', 'M', 'C', 'Q', 'G', 'Z', 'N', 'P', 'Y', 'F', 'V', 'O', 'E'}; - Character[] walzeDrei = {'B', 'D', 'F', 'H', 'J', 'L', 'C', 'P', 'R', 'T', 'X', 'V', 'Z', 'N', 'Y', 'E', 'I', 'W', 'G', 'A', 'K', 'M', 'U', 'S', 'Q', 'O'}; - Character[] walzeVier = {'E', 'S', 'O', 'V', 'P', 'Z', 'J', 'A', 'Y', 'Q', 'U', 'I', 'R', 'H', 'X', 'L', 'N', 'F', 'T', 'G', 'K', 'D', 'C', 'M', 'W', 'B'}; - Character[] walzeFuenf = {'V', 'Z', 'B', 'R', 'G', 'I', 'T', 'Y', 'U', 'P', 'S', 'D', 'N', 'H', 'L', 'X', 'A', 'W', 'M', 'J', 'Q', 'O', 'F', 'E', 'C', 'K'}; - - switch (this.walzennr) { - case 1: - walze = walzeEins; - break; - case 2: - walze = walzeZwei; - break; - case 3: - walze = walzeDrei; - break; - case 4: - walze = walzeVier; - break; - case 5: - walze = walzeFuenf; - break; - } - - return walze; - } - - /** - * TODO: Dokumentieren - * - * @return ringstellung : Character : gibt die neue Ringstellung zurueck - */ - public char getRingstellung() { - return ringstellung; - } - - /** - * Gibt die Initiale Ringstellung der Walze an. - * Es sind nur Zahlen von 1 - 26 zugelassen. - * Im Fehlerfall wird die Ringstellung standardmaessig auf '1' gesetzt. - * - * @param ringstellung : Character : Punkt an dem die Walze umspringt - */ - public void setRingstellung(int ringstellung) { - if (ringstellung > 0 && ringstellung <= 26) { - this.ringstellung = this.alphabet[ringstellung - 1]; - } else { - this.ringstellung = 'Z'; - } - } - - /** - * dreheWalze() return boolean => Wenn Notch erreicht, gib true zurück, ansonsten false - * TODO: Doku - */ - public boolean dreheWalze(int... drehung) { - - boolean checkRing = false; - - verschiebung(); - - if (drehung.length > 0) { - for (int i = 1; i < drehung[0]; i++) { - verschiebung(); - } - } - - if (this.getPosition().equals(this.ringstellung)) { - checkRing = true; - } - - return checkRing; - } + /** + * walzeAlpha : Character[] : Array, dass die Buchstaben des Alphabets enthaelt + */ + private Character[] alphabet; /** - * TODO: Dokumentieren + * ringstellung : char : zeigt die Einstellung fuer den Umspringpunkt */ - private void verschiebung() { - - Character[] neueWalze = new Character[26]; - - for (int index = 0; index < neueWalze.length; index++) { - neueWalze[(index + 1) % neueWalze.length] = this.walzeAlpha[index]; - } - this.walzeAlpha = neueWalze; - } + private char ringstellung; /** - * TODO: Dokumentieren - * TODO: Ich glaube das kann weg? - * - * @return + * walzennr : int : Bestimmt, welche Walze genutzt wird */ - public char getAnzeige() { - int temp = this.getArrayIndex('A', this.walzeAlpha); - - return this.alphabet[temp]; - } + private int walzennr; /** - * Chiffriert den Buchstaben an der Position aus der Methode positionBuchstabe() - * anhand der gewaehlten Walze. - * - * @return chiffrierterBuchstabe : Character : chiffrierter Buchstabe + * alphabet : Character[] : Enthaelt die Buchstaben des Alphabets. Wird im Laufe des Programmes + * aber immer wieder ueberschrieben. */ - public char codiere(char buchstabe) { - for (int i = 0; i < walzeAlpha.length; i++) { - if (walzeAlpha[i].equals(buchstabe)) { - buchstabe = walzenNummer()[i]; - break; - } - } - - return buchstabe; - } - - /** - * Chiffriert den Buchstaben an der Position aus der Methode positionBuchstabeReverse() - * anhand der AlphaWalze. + private Character[] walzeAlpha; + + /** + * Ueberschriebener Konstruktor, der die Eingangsparameter der Walze mitgibt + * + * @param walzennr : int : Nummer der gewaehlten Walze + * @param ringstellung : int : Einstellung des Umsprungpunktes + */ + public Walze(int walzennr, int ringstellung) { + this.alphabet = new Character[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; + this.walzeAlpha = new Character[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; + + this.setWalzennr(walzennr); + this.setRingstellung(ringstellung); + } + + /** + * Sortiert der Walzennummer das passende Character-Array mittels switch zu. + * + * @return walze : Character[] : gibt die gewaehlte Walze zurueck + */ + private Character[] walzenNummer() { + Character[] walze = new Character[26]; + + // Character-Arrays fuer die Codierung jeder Walze + Character[] walzeEins = {'E', 'K', 'M', 'F', 'L', 'G', 'D', 'Q', 'V', 'Z', 'N', 'T', 'O', 'W', 'Y', + 'H', 'X', 'U', 'S', 'P', 'A', 'I', 'B', 'R', 'C', 'J'}; + Character[] walzeZwei = {'A', 'J', 'D', 'K', 'S', 'I', 'R', 'U', 'X', 'B', 'L', 'H', 'W', 'T', 'M', + 'C', 'Q', 'G', 'Z', 'N', 'P', 'Y', 'F', 'V', 'O', 'E'}; + Character[] walzeDrei = {'B', 'D', 'F', 'H', 'J', 'L', 'C', 'P', 'R', 'T', 'X', 'V', 'Z', 'N', 'Y', + 'E', 'I', 'W', 'G', 'A', 'K', 'M', 'U', 'S', 'Q', 'O'}; + Character[] walzeVier = {'E', 'S', 'O', 'V', 'P', 'Z', 'J', 'A', 'Y', 'Q', 'U', 'I', 'R', 'H', 'X', + 'L', 'N', 'F', 'T', 'G', 'K', 'D', 'C', 'M', 'W', 'B'}; + Character[] walzeFuenf = {'V', 'Z', 'B', 'R', 'G', 'I', 'T', 'Y', 'U', 'P', 'S', 'D', 'N', 'H', 'L', + 'X', 'A', 'W', 'M', 'J', 'Q', 'O', 'F', 'E', 'C', 'K'}; + + switch (this.walzennr) { + case 1: + walze = walzeEins; + break; + case 2: + walze = walzeZwei; + break; + case 3: + walze = walzeDrei; + break; + case 4: + walze = walzeVier; + break; + case 5: + walze = walzeFuenf; + break; + } + + return walze; + } + + /** + * TODO: Dokumentieren + * + * @return ringstellung : char : gibt die neue Ringstellung als char zurueck + */ + public char getRingstellung() { + return ringstellung; + } + + /** + * Setzt die Initiale Ringstellung der Walze. + * Es sind nur Zahlen von 1 - 26 zugelassen. * - * @return codierterBuchstabeRe : Character : chiffrierter Buchstabe - */ - public char codiere2(char buchstabe) { - for (int i = 0; i < walzenNummer().length; i++) { - if (walzenNummer()[i].equals(buchstabe)) { - buchstabe = walzeAlpha[i]; - break; - } - } - - return buchstabe; - } - - /** - * TODO: Dokumentieren + * Die Ringstellung wird zum char umgewandelt. + * Im Fehlerfall wird die Ringstellung standardmaessig auf 'Z' gesetzt. + * + * @param ringstellung : int : Punkt an dem die Walze umspringt + */ + //TODO ??? Setter Ringstellung + public void setRingstellung(int ringstellung) { + if ((ringstellung > 0) && (ringstellung <= 26)) { + this.ringstellung = this.alphabet[ringstellung - 1]; + } else { + this.ringstellung = 'Z'; + } + } + + /** + * Dreht die Walze: verschiebt das Alphabet um keine, eine oder mehrere Stellen und ueberschreibt + * das Array alphabet mit der neuen Anordnung. * - * @param buchstabe : Character - * @param array : Character[] - * @return int - */ - private int getArrayIndex(Character buchstabe, Character[] array) { - - int result = -1; - - for (int i = 0; i < array.length; i++) { - if (array[i].equals(buchstabe)) { - result = i; - break; - } - } - - return result; - } - - /** - * Definiert die Walze. Es stehen fuenf Walze zur Auswahl. + * Ueberprueft, ob der Umspringpunkt der Walze nach der Drehung erreicht wurde. * - * @param walzennr : int : setzt die Walzennummer - */ - public void setWalzennr(int walzennr) { - if (walzennr > 0 && walzennr < 6) { - this.walzennr = walzennr; - } else { - System.err.println("Keine gültige Walzennummer"); - } - } - - /** - * TODO: Dokumentieren + * @param drehung : int[] : Anzahl der Drehungen + * @return checkRing : boolean : gibt true zurueck wenn der Umspringpunkt erreicht wurde + * TODO: Doku + */ + public boolean dreheWalze(int... drehung) { + boolean checkRing = false; + + // fuehrt die Verschiebung des Alphabets um eine Stelle durch + verschiebung(); + + // fuehrt die Verschiebung mehrfach aus, wenn mehrere Drehungen ausgefuehrt werden sollen + if (drehung.length > 0) { + for (int i = 1; i < drehung[0]; i++) { + verschiebung(); + } + } + + // gleicht die Ringstellung mit der aktuellen Position ab + if (this.getPosition().equals(this.ringstellung)) { + checkRing = true; + } + + return checkRing; + } + + /** + * Ueberschreibt die Alphabetswalze mit dem, durch die Drehung, verschobenen Alphabet. + * TODO: Dokumentieren + */ + private void verschiebung() { + Character[] neueWalze = new Character[26]; + + for (int index = 0; index < neueWalze.length; index++) { + neueWalze[(index + 1) % neueWalze.length] = this.walzeAlpha[index]; + } + + this.walzeAlpha = neueWalze; + } + + /** + * TODO: Dokumentieren // dass selbe wie getPosition + * Gibt den Buchstaben zurueck der in der Walze aktuell eingestellt ist. * - * @return Character - */ - public Character getPosition() { - return walzeAlpha[0]; - } - - /** - * Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen. - * Buchstaben werden automatisch in Grossbuchstaben umgewandelt. - * Im Fehlerfall wird die Grundeinstellung der Walze standardmaessig auf 'A' gesetzt. - * TODO: Funktionsname hat sich geändert + * @return char an der Stelle temp des Alphabets + */ + public char getAnzeige() { + int temp = this.fetchArrayIndex('A', this.walzeAlpha); + return this.alphabet[temp]; + } + + /** + * Codiert den mitgegebenen Buchstaben anhand der gewaehlten Walze. + * + * @param buchstabe : char : Buchstabe, der verschluesselt werden soll + * @return buchstabe : char : verschluesselter Buchstabe + */ + public char codiere(char buchstabe) { + /* durchsucht die (verschobene) Alphabetswalze nach dem aktuellen Buchstaben und + uebertraegt den Index auf die gewaehlte Codierwalze*/ + buchstabe = walzenNummer()[fetchArrayIndex(buchstabe, walzeAlpha)]; + + return buchstabe; + } + + /** + * Decodiert den mitgegebenen Buchstaben mit Hilfe der (verschobenen) Alphabetswalze + * + * @param buchstabe : char : Buchstabe, der decodiert werden soll + * @return buchstabe : char : decodierter Buchstabe + */ + public char codiere2(char buchstabe) { + /* durchsucht die gewaehlte Walze nach dem aktuellen Buchstaben und + uebertraegt den Index auf die (verschobene) Alphabetswalze*/ + buchstabe = walzeAlpha[fetchArrayIndex(buchstabe, walzenNummer())]; + + return buchstabe; + } + + /** + * TODO: Dokumentieren + * Ermittelt den Index eines Characters in einem Array ueber eine for-Schleife * - * @param buchstabe : Character : Grundeinstellung der Walze - */ - public void setPosition(Character buchstabe) { - if (Character.isLetter(buchstabe)) { - buchstabe = Character.toUpperCase(buchstabe); - System.arraycopy(this.alphabet, 0, this.walzeAlpha, 0, this.alphabet.length); - if (buchstabe > 'A') { - dreheWalze(this.getArrayIndex(buchstabe, this.alphabet)); - } - } - } + * @param buchstabe : Character : Buchstabe, dessen Index benoetigt wird + * @param array : Character[] : Array, in dem der Buchstabe vorkommen soll + * @return result : int : index des Buchstaben + */ + private int fetchArrayIndex(Character buchstabe, Character[] array) { + // wird mit ungueltigem Wert initialisiert + int result = -1; + + for (int i = 0; i < array.length; i++) { + if (array[i].equals(buchstabe)) { + result = i; + break; + } + } + + return result; + } + + /** + * Setzt die Walzennummer. Es stehen fuenf Walze zur Auswahl. + * + * @param walzennr : int : Walzennummer + */ + public void setWalzennr(int walzennr) { + if ((walzennr > 0) && (walzennr < 6)) { + this.walzennr = walzennr; + } else { + System.err.println("Keine gültige Walzennummer"); + } + } + + /** + * TODO: Dokumentieren // das selbe wie getAnzeig? + * Gibt den Character zurueck, der aktuell in der Walze eingestellt ist + * + * @return Character am Index 0 des (verschobenen) Alphabets zurueck + */ + public Character getPosition() { + return walzeAlpha[0]; + } + + /** + * * TODO: Funktionsname hat sich geändert + * Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen. + * Buchstaben werden automatisch in Grossbuchstaben umgewandelt. + * Ist die Grundeinstellung nicht 'A', wird die Methode dreheWalze() aufgerufen. + * + * @param buchstabe : Character : Einstellung der Walze + */ + public void setPosition(Character buchstabe) { + if (Character.isLetter(buchstabe)) { + buchstabe = Character.toUpperCase(buchstabe); + System.arraycopy(this.alphabet, 0, this.walzeAlpha, 0, this.alphabet.length); + if (buchstabe > 'A') { + dreheWalze(this.fetchArrayIndex(buchstabe, this.walzeAlpha)); + } + } + } } diff --git a/src/main/resources/projekt/enigma/gui.fxml b/src/main/resources/projekt/enigma/gui.fxml index ecd4781d497320b01f979cc53ddadbc86e7a2205..4c75cd670c3ea1b526fb67c89e0adc9bfae8579d 100644 --- a/src/main/resources/projekt/enigma/gui.fxml +++ b/src/main/resources/projekt/enigma/gui.fxml @@ -4,11 +4,14 @@ <?import javafx.scene.control.Button?> <?import javafx.scene.control.Label?> <?import javafx.scene.control.MenuButton?> +<?import javafx.scene.control.ProgressBar?> <?import javafx.scene.control.Separator?> <?import javafx.scene.control.TextField?> <?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.ColumnConstraints?> +<?import javafx.scene.layout.FlowPane?> <?import javafx.scene.layout.GridPane?> +<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.RowConstraints?> <?import javafx.scene.layout.TilePane?> <?import javafx.scene.layout.VBox?> @@ -17,7 +20,7 @@ <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="677.0" prefWidth="967.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="projekt.enigma.GuiController"> <children> - <GridPane layoutY="255.0" prefHeight="446.0" prefWidth="968.0" AnchorPane.bottomAnchor="-2.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="255.0"> + <GridPane layoutY="313.0" prefHeight="393.0" prefWidth="968.0" AnchorPane.bottomAnchor="-7.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="313.0"> <columnConstraints> <ColumnConstraints hgrow="ALWAYS" minWidth="10.0" prefWidth="100.0" /> <ColumnConstraints hgrow="ALWAYS" minWidth="10.0" prefWidth="100.0" /> @@ -31,10 +34,10 @@ <ColumnConstraints hgrow="ALWAYS" minWidth="10.0" prefWidth="100.0" /> <ColumnConstraints hgrow="ALWAYS" minWidth="10.0" prefWidth="100.0" /> <ColumnConstraints hgrow="ALWAYS" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="ALWAYS" 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" /> @@ -44,102 +47,102 @@ <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> </rowConstraints> <children> - <TextField fx:id="tfStecker1" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="1" GridPane.rowIndex="8"> + <TextField fx:id="tfStecker1" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="1" GridPane.rowIndex="7"> <GridPane.margin> <Insets left="10.0" right="10.0" /> </GridPane.margin> </TextField> - <TextField fx:id="tfStecker2" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="2" GridPane.rowIndex="8"> + <TextField fx:id="tfStecker2" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="2" GridPane.rowIndex="7"> <GridPane.margin> <Insets left="10.0" right="10.0" /> </GridPane.margin> </TextField> - <TextField fx:id="tfStecker3" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="3" GridPane.rowIndex="8"> + <TextField fx:id="tfStecker3" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="3" GridPane.rowIndex="7"> <GridPane.margin> <Insets left="10.0" right="10.0" /> </GridPane.margin> </TextField> - <TextField fx:id="tfStecker4" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="4" GridPane.rowIndex="8"> + <TextField fx:id="tfStecker4" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="4" GridPane.rowIndex="7"> <GridPane.margin> <Insets left="10.0" right="10.0" /> </GridPane.margin> </TextField> - <TextField fx:id="tfStecker5" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="5" GridPane.rowIndex="8"> + <TextField fx:id="tfStecker5" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="5" GridPane.rowIndex="7"> <GridPane.margin> <Insets left="10.0" right="10.0" /> </GridPane.margin> </TextField> - <TextField fx:id="tfStecker6" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="6" GridPane.rowIndex="8"> + <TextField fx:id="tfStecker6" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="6" GridPane.rowIndex="7"> <GridPane.margin> <Insets left="10.0" right="10.0" /> </GridPane.margin> </TextField> - <TextField fx:id="tfStecker7" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="7" GridPane.rowIndex="8"> + <TextField fx:id="tfStecker7" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="7" GridPane.rowIndex="7"> <GridPane.margin> <Insets left="10.0" right="10.0" /> </GridPane.margin> </TextField> - <TextField fx:id="tfStecker8" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="8" GridPane.rowIndex="8"> + <TextField fx:id="tfStecker8" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="8" GridPane.rowIndex="7"> <GridPane.margin> <Insets left="10.0" right="10.0" /> </GridPane.margin> </TextField> - <TextField fx:id="tfStecker9" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="9" GridPane.rowIndex="8"> + <TextField fx:id="tfStecker9" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="9" GridPane.rowIndex="7"> <GridPane.margin> <Insets left="10.0" right="10.0" /> </GridPane.margin> </TextField> - <TextField fx:id="tfStecker10" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="10" GridPane.rowIndex="8"> + <TextField fx:id="tfStecker10" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="10" GridPane.rowIndex="7"> <GridPane.margin> <Insets left="10.0" right="10.0" /> </GridPane.margin> </TextField> - <Button fx:id="btnM" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="M" textFill="#fffdfd" GridPane.columnIndex="9" GridPane.rowIndex="7"> + <Button fx:id="btnM" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="M" textFill="#fffdfd" GridPane.columnIndex="9" GridPane.rowIndex="6"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnN" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="N" textFill="#fffdfd" GridPane.columnIndex="8" GridPane.rowIndex="7"> + <Button fx:id="btnN" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="N" textFill="#fffdfd" GridPane.columnIndex="8" GridPane.rowIndex="6"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnB" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="B" textFill="#fffdfd" GridPane.columnIndex="7" GridPane.rowIndex="7"> + <Button fx:id="btnB" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="B" textFill="#fffdfd" GridPane.columnIndex="7" GridPane.rowIndex="6"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnV" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="V" textFill="#fffdfd" GridPane.columnIndex="6" GridPane.rowIndex="7"> + <Button fx:id="btnV" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="V" textFill="#fffdfd" GridPane.columnIndex="6" GridPane.rowIndex="6"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnC" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="C" textFill="#fffdfd" GridPane.columnIndex="5" GridPane.rowIndex="7"> + <Button fx:id="btnC" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="C" textFill="#fffdfd" GridPane.columnIndex="5" GridPane.rowIndex="6"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnX" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="X" textFill="#fffdfd" GridPane.columnIndex="4" GridPane.rowIndex="7"> + <Button fx:id="btnX" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="X" textFill="#fffdfd" GridPane.columnIndex="4" GridPane.rowIndex="6"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnY" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Y" textFill="#fffdfd" GridPane.columnIndex="3" GridPane.rowIndex="7"> + <Button fx:id="btnY" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Y" textFill="#fffdfd" GridPane.columnIndex="3" GridPane.rowIndex="6"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnP" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="P" textFill="#fffdfd" GridPane.columnIndex="2" GridPane.rowIndex="7"> + <Button fx:id="btnP" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="P" textFill="#fffdfd" GridPane.columnIndex="2" GridPane.rowIndex="6"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnL" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="L" textFill="#fffdfd" GridPane.columnIndex="10" GridPane.rowIndex="7"> + <Button fx:id="btnL" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="L" textFill="#fffdfd" GridPane.columnIndex="10" GridPane.rowIndex="6"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnK" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="K" textFill="#fffdfd" GridPane.columnIndex="9" GridPane.rowIndex="6"> + <Button fx:id="btnK" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.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> @@ -147,7 +150,7 @@ <Insets left="28.0" /> </GridPane.margin> </Button> - <Button fx:id="btnJ" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="J" textFill="#fffdfd" GridPane.columnIndex="8" GridPane.rowIndex="6"> + <Button fx:id="btnJ" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.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> @@ -155,7 +158,7 @@ <Insets left="28.0" /> </GridPane.margin> </Button> - <Button fx:id="btnH" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="H" textFill="#fffdfd" GridPane.columnIndex="7" GridPane.rowIndex="6"> + <Button fx:id="btnH" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.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> @@ -163,7 +166,7 @@ <Insets left="28.0" /> </GridPane.margin> </Button> - <Button fx:id="btnG" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="G" textFill="#fffdfd" GridPane.columnIndex="6" GridPane.rowIndex="6"> + <Button fx:id="btnG" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.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> @@ -171,7 +174,7 @@ <Insets left="28.0" /> </GridPane.margin> </Button> - <Button fx:id="btnF" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="F" textFill="#fffdfd" GridPane.columnIndex="5" GridPane.rowIndex="6"> + <Button fx:id="btnF" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.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> @@ -179,7 +182,7 @@ <Insets left="28.0" /> </GridPane.margin> </Button> - <Button fx:id="btnD" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="D" textFill="#fffdfd" GridPane.columnIndex="4" GridPane.rowIndex="6"> + <Button fx:id="btnD" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.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> @@ -187,7 +190,7 @@ <Insets left="28.0" /> </GridPane.margin> </Button> - <Button fx:id="btnS" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="S" textFill="#fffdfd" GridPane.columnIndex="3" GridPane.rowIndex="6"> + <Button fx:id="btnS" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.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> @@ -195,7 +198,7 @@ <Insets left="28.0" /> </GridPane.margin> </Button> - <Button fx:id="btnA" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="A" textFill="#fffdfd" GridPane.columnIndex="2" GridPane.rowIndex="6"> + <Button fx:id="btnA" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.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> @@ -203,52 +206,52 @@ <Insets left="28.0" /> </GridPane.margin> </Button> - <Button fx:id="btnO" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="O" textFill="#fffdfd" GridPane.columnIndex="10" GridPane.rowIndex="5"> + <Button fx:id="btnO" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="O" textFill="#fffdfd" GridPane.columnIndex="10" GridPane.rowIndex="4"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnI" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="I" textFill="#fffdfd" GridPane.columnIndex="9" GridPane.rowIndex="5"> + <Button fx:id="btnI" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="I" textFill="#fffdfd" GridPane.columnIndex="9" GridPane.rowIndex="4"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnU" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="U" textFill="#fffdfd" GridPane.columnIndex="8" GridPane.rowIndex="5"> + <Button fx:id="btnU" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="U" textFill="#fffdfd" GridPane.columnIndex="8" GridPane.rowIndex="4"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnZ" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Z" textFill="#fffdfd" GridPane.columnIndex="7" GridPane.rowIndex="5"> + <Button fx:id="btnZ" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Z" textFill="#fffdfd" GridPane.columnIndex="7" GridPane.rowIndex="4"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnT" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="T" textFill="#fffdfd" GridPane.columnIndex="6" GridPane.rowIndex="5"> + <Button fx:id="btnT" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="T" textFill="#fffdfd" GridPane.columnIndex="6" GridPane.rowIndex="4"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnR" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="R" textFill="#fffdfd" GridPane.columnIndex="5" GridPane.rowIndex="5"> + <Button fx:id="btnR" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="R" textFill="#fffdfd" GridPane.columnIndex="5" GridPane.rowIndex="4"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnE" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="E" textFill="#fffdfd" GridPane.columnIndex="4" GridPane.rowIndex="5"> + <Button fx:id="btnE" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="E" textFill="#fffdfd" GridPane.columnIndex="4" GridPane.rowIndex="4"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnW" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="W" textFill="#fffdfd" GridPane.columnIndex="3" GridPane.rowIndex="5"> + <Button fx:id="btnW" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="W" textFill="#fffdfd" GridPane.columnIndex="3" GridPane.rowIndex="4"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnQ" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Q" textFill="#fffdfd" GridPane.columnIndex="2" GridPane.rowIndex="5"> + <Button fx:id="btnQ" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Q" textFill="#fffdfd" GridPane.columnIndex="2" GridPane.rowIndex="4"> <font> <Font name="System Bold" size="18.0" /> </font> </Button> - <Button minHeight="44.0" mnemonicParsing="false" onAction="#loeschen" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="<" textFill="#fffdfd" GridPane.columnIndex="10" GridPane.rowIndex="6"> + <Button minHeight="44.0" mnemonicParsing="false" onAction="#loeschen" prefHeight="48.0" prefWidth="51.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> @@ -256,65 +259,65 @@ <Insets left="28.0" /> </GridPane.margin> </Button> - <Circle fx:id="circL" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="10" GridPane.rowIndex="3" /> - <Circle fx:id="circM" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9" GridPane.rowIndex="3" /> - <Circle fx:id="circN" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" GridPane.rowIndex="3" /> - <Circle fx:id="circB" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" GridPane.rowIndex="3" /> - <Circle fx:id="circV" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="3" /> - <Circle fx:id="circC" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="3" /> - <Circle fx:id="circX" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4" GridPane.rowIndex="3" /> - <Circle fx:id="circY" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" GridPane.rowIndex="3" /> - <Circle fx:id="circP" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" GridPane.rowIndex="3" /> - <Circle fx:id="circK" 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="10" GridPane.rowIndex="2" /> + <Circle fx:id="circM" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9" GridPane.rowIndex="2" /> + <Circle fx:id="circN" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" GridPane.rowIndex="2" /> + <Circle fx:id="circB" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" GridPane.rowIndex="2" /> + <Circle fx:id="circV" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="2" /> + <Circle fx:id="circC" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="2" /> + <Circle fx:id="circX" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4" GridPane.rowIndex="2" /> + <Circle fx:id="circY" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" GridPane.rowIndex="2" /> + <Circle fx:id="circP" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" GridPane.rowIndex="2" /> + <Circle fx:id="circK" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9" GridPane.rowIndex="1"> <GridPane.margin> <Insets left="35.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circJ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" GridPane.rowIndex="2"> + <Circle fx:id="circJ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" GridPane.rowIndex="1"> <GridPane.margin> <Insets left="35.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circH" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" GridPane.rowIndex="2"> + <Circle fx:id="circH" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" GridPane.rowIndex="1"> <GridPane.margin> <Insets bottom="4.0" left="42.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circG" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="2"> + <Circle fx:id="circG" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="1"> <GridPane.margin> <Insets left="35.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circF" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="2"> + <Circle fx:id="circF" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="1"> <GridPane.margin> <Insets left="35.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circD" 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"> <GridPane.margin> <Insets left="35.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circS" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" GridPane.rowIndex="2"> + <Circle fx:id="circS" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" GridPane.rowIndex="1"> <GridPane.margin> <Insets left="35.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circA" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" GridPane.rowIndex="2"> + <Circle fx:id="circA" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" GridPane.rowIndex="1"> <GridPane.margin> <Insets left="35.0" /> </GridPane.margin> </Circle> - <Circle fx:id="circO" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="10" GridPane.rowIndex="1" /> - <Circle fx:id="circI" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9" GridPane.rowIndex="1" /> - <Circle fx:id="circU" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" GridPane.rowIndex="1" /> - <Circle fx:id="circZ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" GridPane.rowIndex="1" /> - <Circle fx:id="circT" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="1" /> - <Circle fx:id="circR" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="1" /> - <Circle fx:id="circE" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4" GridPane.rowIndex="1" /> - <Circle fx:id="circW" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" GridPane.rowIndex="1" /> - <Circle fx:id="circQ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" GridPane.rowIndex="1" /> - <Label fx:id="lblL" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="L" GridPane.columnIndex="10" GridPane.rowIndex="3"> + <Circle fx:id="circO" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="10" /> + <Circle fx:id="circI" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9" /> + <Circle fx:id="circU" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" /> + <Circle fx:id="circZ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" /> + <Circle fx:id="circT" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" /> + <Circle fx:id="circR" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" /> + <Circle fx:id="circE" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4" /> + <Circle fx:id="circW" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" /> + <Circle fx:id="circQ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" /> + <Label fx:id="lblL" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="L" GridPane.columnIndex="10" GridPane.rowIndex="2"> <font> <Font size="23.0" /> </font> @@ -322,7 +325,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblM" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="M" GridPane.columnIndex="9" GridPane.rowIndex="3"> + <Label fx:id="lblM" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="M" GridPane.columnIndex="9" GridPane.rowIndex="2"> <font> <Font size="23.0" /> </font> @@ -330,7 +333,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblN" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="N" GridPane.columnIndex="8" GridPane.rowIndex="3"> + <Label fx:id="lblN" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="N" GridPane.columnIndex="8" GridPane.rowIndex="2"> <font> <Font size="23.0" /> </font> @@ -338,7 +341,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblB" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="B" GridPane.columnIndex="7" GridPane.rowIndex="3"> + <Label fx:id="lblB" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="B" GridPane.columnIndex="7" GridPane.rowIndex="2"> <font> <Font size="23.0" /> </font> @@ -346,7 +349,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblV" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="V" GridPane.columnIndex="6" GridPane.rowIndex="3"> + <Label fx:id="lblV" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="V" GridPane.columnIndex="6" GridPane.rowIndex="2"> <font> <Font size="23.0" /> </font> @@ -354,7 +357,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblC" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="C" GridPane.columnIndex="5" GridPane.rowIndex="3"> + <Label fx:id="lblC" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="C" GridPane.columnIndex="5" GridPane.rowIndex="2"> <font> <Font size="23.0" /> </font> @@ -362,7 +365,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblX" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="X" GridPane.columnIndex="4" GridPane.rowIndex="3"> + <Label fx:id="lblX" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="X" GridPane.columnIndex="4" GridPane.rowIndex="2"> <font> <Font size="23.0" /> </font> @@ -370,7 +373,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblY" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="Y" GridPane.columnIndex="3" GridPane.rowIndex="3"> + <Label fx:id="lblY" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="Y" GridPane.columnIndex="3" GridPane.rowIndex="2"> <font> <Font size="23.0" /> </font> @@ -378,7 +381,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblP" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="P" GridPane.columnIndex="2" GridPane.rowIndex="3"> + <Label fx:id="lblP" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="P" GridPane.columnIndex="2" GridPane.rowIndex="2"> <font> <Font size="23.0" /> </font> @@ -386,7 +389,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblK" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="K" GridPane.columnIndex="9" GridPane.rowIndex="2"> + <Label fx:id="lblK" 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> @@ -394,7 +397,7 @@ <Insets bottom="4.0" left="42.0" /> </GridPane.margin> </Label> - <Label fx:id="lblJ" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="J" GridPane.columnIndex="8" GridPane.rowIndex="2"> + <Label fx:id="lblJ" 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> @@ -402,7 +405,7 @@ <Insets bottom="4.0" left="42.0" /> </GridPane.margin> </Label> - <Label fx:id="lblH" alignment="CENTER" minHeight="0.0" prefHeight="27.0" prefWidth="25.0" text="H" GridPane.columnIndex="7" GridPane.rowIndex="2"> + <Label fx:id="lblH" 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> @@ -410,7 +413,7 @@ <Insets bottom="6.0" left="50.0" /> </GridPane.margin> </Label> - <Label fx:id="lblG" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="G" GridPane.columnIndex="6" GridPane.rowIndex="2"> + <Label fx:id="lblG" 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> @@ -418,7 +421,7 @@ <Insets bottom="4.0" left="42.0" /> </GridPane.margin> </Label> - <Label fx:id="lblF" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="F" GridPane.columnIndex="5" GridPane.rowIndex="2"> + <Label fx:id="lblF" 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> @@ -426,7 +429,7 @@ <Insets bottom="4.0" left="42.0" /> </GridPane.margin> </Label> - <Label fx:id="lblD" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="D" GridPane.columnIndex="4" GridPane.rowIndex="2"> + <Label fx:id="lblD" 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> @@ -434,7 +437,7 @@ <Insets bottom="4.0" left="42.0" /> </GridPane.margin> </Label> - <Label fx:id="lblS" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="S" GridPane.columnIndex="3" GridPane.rowIndex="2"> + <Label fx:id="lblS" 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> @@ -442,7 +445,7 @@ <Insets bottom="4.0" left="42.0" /> </GridPane.margin> </Label> - <Label fx:id="lblA" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="A" GridPane.columnIndex="2" GridPane.rowIndex="2"> + <Label fx:id="lblA" 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> @@ -450,7 +453,7 @@ <Insets bottom="4.0" left="42.0" /> </GridPane.margin> </Label> - <Label fx:id="lblQ" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Q" GridPane.columnIndex="2" GridPane.rowIndex="1"> + <Label fx:id="lblQ" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Q" GridPane.columnIndex="2"> <font> <Font size="23.0" /> </font> @@ -458,7 +461,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblW" alignment="CENTER" prefHeight="36.0" prefWidth="30.0" text="W" GridPane.columnIndex="3" GridPane.rowIndex="1"> + <Label fx:id="lblW" alignment="CENTER" prefHeight="36.0" prefWidth="30.0" text="W" GridPane.columnIndex="3"> <font> <Font size="23.0" /> </font> @@ -466,7 +469,7 @@ <Insets bottom="1.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblE" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="E" textAlignment="CENTER" GridPane.columnIndex="4" GridPane.rowIndex="1"> + <Label fx:id="lblE" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="E" textAlignment="CENTER" GridPane.columnIndex="4"> <font> <Font size="23.0" /> </font> @@ -474,7 +477,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblR" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="R" textAlignment="CENTER" GridPane.columnIndex="5" GridPane.rowIndex="1"> + <Label fx:id="lblR" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="R" textAlignment="CENTER" GridPane.columnIndex="5"> <font> <Font size="23.0" /> </font> @@ -482,7 +485,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblT" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="T" textAlignment="CENTER" GridPane.columnIndex="6" GridPane.rowIndex="1"> + <Label fx:id="lblT" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="T" textAlignment="CENTER" GridPane.columnIndex="6"> <font> <Font size="23.0" /> </font> @@ -490,7 +493,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblZ" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Z" textAlignment="CENTER" GridPane.columnIndex="7" GridPane.rowIndex="1"> + <Label fx:id="lblZ" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Z" textAlignment="CENTER" GridPane.columnIndex="7"> <font> <Font size="23.0" /> </font> @@ -498,7 +501,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblU" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="U" textAlignment="CENTER" GridPane.columnIndex="8" GridPane.rowIndex="1"> + <Label fx:id="lblU" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="U" textAlignment="CENTER" GridPane.columnIndex="8"> <font> <Font size="23.0" /> </font> @@ -506,7 +509,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblI" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="I" textAlignment="CENTER" GridPane.columnIndex="9" GridPane.rowIndex="1"> + <Label fx:id="lblI" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="I" textAlignment="CENTER" GridPane.columnIndex="9"> <font> <Font size="23.0" /> </font> @@ -514,7 +517,7 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <Label fx:id="lblO" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="O" textAlignment="CENTER" GridPane.columnIndex="10" GridPane.rowIndex="1"> + <Label fx:id="lblO" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="O" textAlignment="CENTER" GridPane.columnIndex="10"> <font> <Font size="23.0" /> </font> @@ -522,12 +525,13 @@ <Insets bottom="2.0" left="7.0" /> </GridPane.margin> </Label> - <TilePane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="5" /> + <TilePane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="4" /> + <VBox prefHeight="200.0" prefWidth="152.0" GridPane.columnIndex="11" /> </children> </GridPane> - <AnchorPane layoutX="233.0" layoutY="169.0" prefHeight="111.0" prefWidth="487.0" AnchorPane.leftAnchor="233.0" AnchorPane.rightAnchor="248.0" AnchorPane.topAnchor="169.0"> + <AnchorPane layoutX="241.0" layoutY="130.0" prefHeight="111.0" prefWidth="487.0" AnchorPane.leftAnchor="241.0" AnchorPane.rightAnchor="240.0"> <children> - <VBox layoutX="72.0" layoutY="-89.0" prefHeight="200.0" prefWidth="378.0" AnchorPane.leftAnchor="72.0"> + <VBox layoutX="72.0" layoutY="-89.0" prefHeight="200.0" prefWidth="378.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="72.0" AnchorPane.rightAnchor="37.0" AnchorPane.topAnchor="-89.0"> <children> <TextField fx:id="tfCodiert" editable="false" prefHeight="99.0" prefWidth="377.0" /> <Separator prefWidth="200.0" /> @@ -535,64 +539,84 @@ </children> </VBox> </children></AnchorPane> - <MenuButton fx:id="mBtnWalzPos1" alignment="CENTER_RIGHT" contentDisplay="CENTER" layoutX="91.0" layoutY="76.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I"> + <Label layoutX="40.0" layoutY="233.0" prefHeight="17.0" prefWidth="172.0" text="Spruchschlüssel" /> + <Label layoutX="34.0" layoutY="259.0" prefHeight="17.0" prefWidth="172.0" text="Tagesschlüssel" /> + <ProgressBar fx:id="pbLadeNachricht" layoutX="313.0" layoutY="273.0" prefHeight="18.0" prefWidth="378.0" progress="0.0" /> + <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> + <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> + <children> + <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="mBtnWalzPos3" alignment="CENTER_RIGHT" layoutX="208.0" layoutY="80.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" textAlignment="CENTER"> + <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="mBtnWalzPos2" alignment="CENTER_RIGHT" layoutX="152.0" layoutY="80.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" textAlignment="CENTER"> + <MenuButton fx:id="mBtnWalzPos3" mnemonicParsing="false" popupSide="TOP" prefHeight="25.0" prefWidth="48.0" text="I" textAlignment="CENTER" GridPane.columnIndex="3"> </MenuButton> -<!-- <MenuButton layoutX="93.0" layoutY="114.0" mnemonicParsing="false">--> -<!-- <items>--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z1" text="1" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z2" text="2" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z3" text="3" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z4" text="4" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z5" text="5" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z6" text="6" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z7" text="7" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z8" text="8" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z9" text="9" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z10" text="10" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z11" text="11" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z12" text="12" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z13" text="13" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z14" text="14" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z15" text="15" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z16" text="16" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z17" text="17" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z18" text="18" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z19" text="19" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z20" text="20" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z21" text="21" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z22" text="22" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z23" text="23" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z24" text="24" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z25" text="25" />--> -<!-- <MenuItem mnemonicParsing="false" onAction="#z26" text="26" />--> -<!-- </items>--> -<!-- </MenuButton>--> - <MenuButton fx:id="mBtnNotchPos3" alignment="CENTER_RIGHT" layoutX="208.0" layoutY="120.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER"> + <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="mBtnNotchPos2" alignment="CENTER_RIGHT" layoutX="152.0" layoutY="120.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER"> + <!-- <MenuButton layoutX="93.0" layoutY="114.0" mnemonicParsing="false">--> + <!-- <items>--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z1" text="1" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z2" text="2" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z3" text="3" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z4" text="4" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z5" text="5" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z6" text="6" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z7" text="7" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z8" text="8" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z9" text="9" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z10" text="10" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z11" text="11" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z12" text="12" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z13" text="13" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z14" text="14" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z15" text="15" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z16" text="16" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z17" text="17" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z18" text="18" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z19" text="19" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z20" text="20" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z21" text="21" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z22" text="22" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z23" text="23" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z24" text="24" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z25" text="25" />--> + <!-- <MenuItem mnemonicParsing="false" onAction="#z26" text="26" />--> + <!-- </items>--> + <!-- </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> - <MenuButton fx:id="mBtnStartPos1" alignment="CENTER_RIGHT" layoutX="95.0" layoutY="157.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER"> + <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="mBtnStartPos3" alignment="CENTER_RIGHT" layoutX="208.0" layoutY="160.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER"> + <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="mBtnStartPos2" alignment="CENTER_RIGHT" layoutX="152.0" layoutY="160.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER"> + <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> - <MenuButton fx:id="mBtnNotchPos1" alignment="CENTER_RIGHT" layoutX="93.0" layoutY="114.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER" /> - <Label layoutX="29.0" layoutY="80.0" text="Walze" /> - <Label layoutX="29.0" layoutY="127.0" text="Ringe" /> - <Label layoutX="17.0" layoutY="164.0" text="Startposition" /> - <Label layoutX="68.0" layoutY="226.0" prefHeight="17.0" prefWidth="172.0" text="Spruchschlüssel" /> - <Label layoutX="68.0" layoutY="205.0" prefHeight="17.0" prefWidth="172.0" text="Tagesschlüssel" /> - <VBox layoutX="753.0" layoutY="82.0" prefHeight="200.0" prefWidth="152.0" AnchorPane.rightAnchor="63.0" AnchorPane.topAnchor="82.0"> + </children> + </GridPane> + <Label fx:id="lblLadeNachricht" alignment="CENTER" layoutX="313.0" layoutY="250.0" prefHeight="17.0" prefWidth="378.0" text="Neue Nachricht wird vom Funkraum abgerufen!" /> + <FlowPane layoutX="735.0" layoutY="27.0" prefHeight="158.0" prefWidth="152.0" AnchorPane.leftAnchor="735.0" AnchorPane.rightAnchor="38.0" AnchorPane.topAnchor="27.0"> <children> <Button mnemonicParsing="false" onAction="#btnsenden" prefHeight="80.0" prefWidth="152.0" text="An Funker senden" /> - <Label prefHeight="40.0" prefWidth="152.0" /> - <Button mnemonicParsing="false" onAction="#btnempfangen" prefHeight="80.0" prefWidth="152.0" text="Funkspruch empfangen" /> + <Pane> + <children> + <Button mnemonicParsing="false" onAction="#btnempfangen" prefHeight="101.0" prefWidth="195.0" text="Funkspruch empfangen" /> + </children> + </Pane> </children> - </VBox> + </FlowPane> </children> </AnchorPane> diff --git a/src/main/resources/projekt/enigma/kenngruppe.fxml b/src/main/resources/projekt/enigma/kenngruppe.fxml index 3031337d94d66a398f246a8d2b7e473300459cfc..237b3ed092c45e0f47661d7827503bee95b79ea7 100644 --- a/src/main/resources/projekt/enigma/kenngruppe.fxml +++ b/src/main/resources/projekt/enigma/kenngruppe.fxml @@ -2,13 +2,18 @@ <?import javafx.scene.control.Button?> <?import javafx.scene.control.Label?> -<?import javafx.scene.control.TextField?> <?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.layout.HBox?> -<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="257.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="projekt.enigma.KenngruppeController"> +<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="411.0" prefWidth="512.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="enigma.KenngruppeController"> <children> <Label layoutX="81.0" layoutY="29.0" text="Bitte Kenngruppe eingeben!" AnchorPane.leftAnchor="81.0" AnchorPane.rightAnchor="70.0" AnchorPane.topAnchor="29.0" /> - <Button fx:id="secondaryButton" layoutX="72.0" layoutY="178.0" onAction="#switchToPrimary" text="Kenngruppe bestätigen!" AnchorPane.bottomAnchor="54.0" AnchorPane.leftAnchor="72.0" AnchorPane.rightAnchor="84.0" /> - <TextField layoutX="96.0" layoutY="95.0" prefHeight="25.0" prefWidth="108.0" AnchorPane.bottomAnchor="137.0" AnchorPane.leftAnchor="96.0" AnchorPane.rightAnchor="96.0" AnchorPane.topAnchor="95.0" /> + <HBox layoutX="107.0" layoutY="141.0" prefHeight="26.0" prefWidth="276.0" AnchorPane.leftAnchor="107.0" AnchorPane.rightAnchor="129.0" AnchorPane.topAnchor="141.0"> + <children> + <Button fx:id="secondaryButton" onAction="#switchToPrimary" prefHeight="25.0" prefWidth="142.0" text="Kenngruppe bestätigen!" /> + <Label prefHeight="17.0" prefWidth="159.0" text="Label" /> + <Button mnemonicParsing="false" prefHeight="25.0" prefWidth="150.0" text="Button" /> + </children> + </HBox> </children> </AnchorPane>