Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • d.eisold/enigma
  • Janschubi1993/enigma
  • TsunamiKlaus/enigma
  • alfatrainingkurse/java/enigma
  • FloriN/enigma
  • PaoloPinkel/enigma
6 results
Show changes
package projekt.enigma.view;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.GridPane;
import projekt.enigma.model.Codierer;
import java.util.Arrays;
/**
* Die Klasse ChkBoxGripPane erweitert das GridPane Objekt.
* Wir erstellen ein GridPane in welches Checkboxen gelegt werden.
* Die Anzahl der Checkboxen wird durch die verfuegbarenBuchstaben festgelegt.
* Für jeden Buchstaben in diesem char Array, wird eine Checkbox erstellt und auf das Gridpane gelegt.
*/
public class ChkBoxGridPane extends GridPane {
// Der globale Checkbox Array
private CheckBox[] checkbox;
// Die Buchstaben die für das jeweilige Pane selectiert werden sollen
private String checkedBuchstaben;
// Die Anzahl der möglichen Checkboxen
private int charSize;
// Das Codierer Objekt. Dieses wird benötigt um auf die Funktionen für das Steckbrett zuzugreifen
private Codierer codierer;
// Der Steckbrett Port für welchen das Pane und die Checkboxen erstellt werden sollen
private int port;
// Die verfügbaren Buchstaben für den jeweiligen Port
private char[] verfuegbareBuchstaben;
// Das Button Objekt des Ports über den dieses Pane gesteuert wird
private ToggleButton tBtnPort;
/**
* Hier werfen wir die Checkboxen auf das Gridpane und weißen ihnen die Propertys zu.
* Außerdem wird hier auch der Listener generiert womit wir prüfen ob die maximale Auswahlmöglichkeit
* erreicht ist.
* Es können maximal zwei Checkboxen ausgewählt werden. Wenn zwei erreicht sind, werden die restlichen Checkboxen
* deaktiviert. Wenn nur noch eine oder keine Box ausgewählt ist, werden die restlichen wieder aktiviert.
* Bei null und zwei Boxen, werden die Buchstaben in das Steckbrett geschrieben.
* Andere Auswahlmöglchkeiten stehen nicht zur Verfügung, da ein Kabel nur zwei Enden hat in der Regel.
*
* @param codierer : Codierer Objekt
* @param port : int
* @param tBtnPort : ToogleButton
*/
public ChkBoxGridPane(Codierer codierer, int port, ToggleButton tBtnPort) {
this.codierer = codierer;
this.port = port;
this.tBtnPort = tBtnPort;
this.verfuegbareBuchstaben = this.codierer.fetchVerfuegbareBuchstaben(this.port).toCharArray();
Arrays.sort(this.verfuegbareBuchstaben);
charSize = this.verfuegbareBuchstaben.length;
this.checkedBuchstaben = tBtnPort.getText();
initializeComponents();
}
/**
* Es wird ein GridPane erzeugt, das zwei Spalten und abhängig von der Länge des
* Arrays (Character[] alphabet) Reihen hat. Das Label der CheckBoxen soll
* abhängig von deren Index links bzw. recht erzeugt werden
*/
private void initializeComponents() {
checkbox = new CheckBox[charSize];
this.setAlignment(Pos.CENTER);
// Für jeden verfügbaren Buchstaben einen Durchlauf
for (int i = 0; i < this.verfuegbareBuchstaben.length; i++) {
if (this.verfuegbareBuchstaben[i] != 20 && this.verfuegbareBuchstaben[i] != ' ') {
checkbox[i] = new CheckBox(this.verfuegbareBuchstaben[i] + "");
checkbox[i].setPadding(new Insets(1, 1, 1, 1));
if (!checkedBuchstaben.equals("")) {
if (!checkedBuchstaben.contains(String.valueOf(this.verfuegbareBuchstaben[i]))) {
checkbox[i].setDisable(true);
} else {
checkbox[i].setSelected(true);
}
} else {
checkbox[i].setSelected(false);
checkbox[i].setDisable(false);
}
// Der Listener für die jeweilige Checkbox
checkbox[i].selectedProperty().addListener((observable, oldValue, newValue) -> {
String portSelection = "";
int zaehler = 0;
// Die selektierten Chechkboxen zählen
for (CheckBox cb : checkbox) {
if (cb != null && cb.isSelected()) {
zaehler++;
}
}
// Wenn nur eine oder keine Checkbox ausgewählt ist
if (zaehler == 1 || zaehler == 0) {
for (CheckBox cb : checkbox) {
if (cb != null && cb.isDisabled()) {
cb.setDisable(false);
}
}
}
// Es ist keine Checkbox ausgewählt
if (zaehler == 0) {
// Daten ins Steckbrett schreiben
this.codierer.setzeSteckbrett(this.port, "");
// Und den Button neu beschreiben
tBtnPort.setText(portSelection);
}
// Das Maximum an selektierten Checkboxen (2) ist erreicht
if (zaehler == 2) {
for (CheckBox cb : checkbox) {
if (cb != null && !cb.isSelected()) {
cb.setDisable(true);
} else {
if (cb != null) {
portSelection += cb.getText();
}
}
}
// Daten ins Steckbrett schreiben
this.codierer.setzeSteckbrett(this.port, "");
this.codierer.setzeSteckbrett(this.port, portSelection);
// Und den Button neu beschreiben
tBtnPort.setText(portSelection);
}
});
// Eine neue Row im Gridpane anlegen für den nächsten Button
this.addRow(i + 1);
this.add(checkbox[i], 2, i + 1, 1, 1);
}
}
// Das Pane anzeigen
this.setVisible(true);
}
/**
* Gibt den Anzahl der zur Verfügung stehenden Buchstaben zurück.
* Anhang dieses Wertes, wird die Anzahl der Checkboxen festgelegt.
*
* @return int : Anzahl der möglcihen chars
*/
public int getCharSize() {
return charSize;
}
}
...@@ -4,7 +4,8 @@ ...@@ -4,7 +4,8 @@
<?import javafx.scene.control.Button?> <?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<?import javafx.scene.control.MenuButton?> <?import javafx.scene.control.MenuButton?>
<?import javafx.scene.control.TextField?> <?import javafx.scene.control.ProgressIndicator?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?> <?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?> <?import javafx.scene.layout.GridPane?>
...@@ -13,92 +14,55 @@ ...@@ -13,92 +14,55 @@
<?import javafx.scene.shape.Circle?> <?import javafx.scene.shape.Circle?>
<?import javafx.scene.text.Font?> <?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.999-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="projekt.enigma.GuiController"> <AnchorPane fx:id="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">
<children> <GridPane layoutX="23.0" layoutY="60.0" prefHeight="158.0" prefWidth="237.0" AnchorPane.leftAnchor="23.0" AnchorPane.topAnchor="60.0">
<AnchorPane layoutX="207.0" layoutY="-111.0" prefHeight="111.0" prefWidth="487.0" AnchorPane.leftAnchor="207.0" AnchorPane.rightAnchor="274.0" />
<GridPane layoutX="23.0" layoutY="60.0" prefHeight="158.0" prefWidth="237.0" AnchorPane.leftAnchor="23.0" AnchorPane.topAnchor="60.0">
<columnConstraints> <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> </columnConstraints>
<rowConstraints> <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> </rowConstraints>
<children> <Label text="Walze" />
<Label text="Walze" /> <Label text="Ringe" GridPane.rowIndex="1" />
<Label text="Ringe" GridPane.rowIndex="1" /> <Label text="Position" GridPane.rowIndex="2" />
<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 fx:id="mBtnWalzPos1" alignment="CENTER_RIGHT" contentDisplay="CENTER" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" GridPane.columnIndex="1"> </MenuButton>
</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> <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> <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="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="mBtnNotchPos2" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="1" textAlignment="CENTER" GridPane.columnIndex="2" GridPane.rowIndex="1"> </MenuButton>
</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 layoutX="93.0" layoutY="114.0" mnemonicParsing="false">--> </MenuButton>
<!-- <items>--> <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">
<!-- <MenuItem mnemonicParsing="false" onAction="#z1" text="1" />--> </MenuButton>
<!-- <MenuItem mnemonicParsing="false" onAction="#z2" text="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">
<!-- <MenuItem mnemonicParsing="false" onAction="#z3" text="3" />--> </MenuButton>
<!-- <MenuItem mnemonicParsing="false" onAction="#z4" text="4" />--> <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">
<!-- <MenuItem mnemonicParsing="false" onAction="#z5" text="5" />--> </MenuButton>
<!-- <MenuItem mnemonicParsing="false" onAction="#z6" text="6" />--> </GridPane>
<!-- <MenuItem mnemonicParsing="false" onAction="#z7" text="7" />--> <GridPane layoutX="23.0" layoutY="222.0" prefHeight="60.0" prefWidth="270.0" AnchorPane.leftAnchor="23.0" AnchorPane.topAnchor="222.0">
<!-- <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" 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>
<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>
</children>
</GridPane>
<GridPane layoutX="23.0" layoutY="222.0" prefHeight="60.0" prefWidth="270.0" AnchorPane.leftAnchor="23.0" AnchorPane.topAnchor="222.0">
<columnConstraints> <columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="206.0" minWidth="10.0" prefWidth="102.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 hgrow="SOMETIMES" maxWidth="224.0" minWidth="10.0" prefWidth="168.0" />
</columnConstraints> </columnConstraints>
<rowConstraints> <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> </rowConstraints>
<children> <Label alignment="CENTER_RIGHT" />
<Label alignment="CENTER_RIGHT" /> <Label text="Spruchschlüssel:" />
<Label text="Spruchschlüssel:" /> <Label fx:id="lblSpruchschluessel" prefHeight="17.0" prefWidth="181.0" GridPane.columnIndex="1" />
<Label fx:id="lblTagesschluessel" prefHeight="17.0" prefWidth="181.0" GridPane.columnIndex="1" /> <Button fx:id="btnReset" mnemonicParsing="false" onAction="#gedrueckteTaste" text="Zurücksetzen" GridPane.rowIndex="1" />
<Label fx:id="lblSpruchschluessel" prefHeight="17.0" prefWidth="181.0" GridPane.columnIndex="1" /> </GridPane>
<Button fx:id="btnReset" mnemonicParsing="false" onAction="#gedrueckteTaste" text="Zurücksetzen" GridPane.rowIndex="1" /> <GridPane fx:id="mainGrid" layoutX="6.0" layoutY="294.0" prefHeight="377.0" prefWidth="952.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="300.0">
</children>
</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">
<columnConstraints> <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" />
...@@ -111,10 +75,9 @@ ...@@ -111,10 +75,9 @@
<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> </columnConstraints>
<rowConstraints> <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" />
...@@ -122,585 +85,542 @@ ...@@ -122,585 +85,542 @@
<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> </rowConstraints>
<children> <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">
<TextField fx:id="tfStecker1" prefHeight="25.0" prefWidth="20.0" GridPane.columnIndex="1" GridPane.rowIndex="8"> <font>
<GridPane.margin> <Font name="System Bold" size="18.0" />
<Insets left="10.0" right="10.0" /> </font>
</GridPane.margin> </Button>
</TextField> <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">
<TextField fx:id="tfStecker2" prefHeight="25.0" prefWidth="20.0" GridPane.columnIndex="2" GridPane.rowIndex="8"> <font>
<GridPane.margin> <Font name="System Bold" size="18.0" />
<Insets left="10.0" right="10.0" /> </font>
</GridPane.margin> <GridPane.margin>
</TextField> <Insets left="34.0" />
<TextField fx:id="tfStecker3" prefHeight="25.0" prefWidth="20.0" GridPane.columnIndex="3" GridPane.rowIndex="8"> </GridPane.margin>
<GridPane.margin> </Button>
<Insets left="10.0" right="10.0" /> <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">
</GridPane.margin> <font>
</TextField> <Font name="System Bold" size="18.0" />
<TextField fx:id="tfStecker4" prefHeight="25.0" prefWidth="20.0" GridPane.columnIndex="4" GridPane.rowIndex="8"> </font>
<GridPane.margin> <GridPane.margin>
<Insets left="10.0" right="10.0" /> <Insets left="34.0" />
</GridPane.margin> </GridPane.margin>
</TextField> </Button>
<TextField fx:id="tfStecker5" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="5" GridPane.rowIndex="8"> <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">
<GridPane.margin> <font>
<Insets left="10.0" right="10.0" /> <Font name="System Bold" size="18.0" />
</GridPane.margin> </font>
</TextField> <GridPane.margin>
<TextField fx:id="tfStecker6" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="6" GridPane.rowIndex="8"> <Insets left="34.0" />
<GridPane.margin> </GridPane.margin>
<Insets left="10.0" right="10.0" /> </Button>
</GridPane.margin> <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">
</TextField> <font>
<TextField fx:id="tfStecker7" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="7" GridPane.rowIndex="8"> <Font name="System Bold" size="18.0" />
<GridPane.margin> </font>
<Insets left="10.0" right="10.0" /> <GridPane.margin>
</GridPane.margin> <Insets left="34.0" />
</TextField> </GridPane.margin>
<TextField fx:id="tfStecker8" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="8" GridPane.rowIndex="8"> </Button>
<GridPane.margin> <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">
<Insets left="10.0" right="10.0" /> <font>
</GridPane.margin> <Font name="System Bold" size="18.0" />
</TextField> </font>
<TextField fx:id="tfStecker9" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="9" GridPane.rowIndex="8"> <GridPane.margin>
<GridPane.margin> <Insets left="34.0" />
<Insets left="10.0" right="10.0" /> </GridPane.margin>
</GridPane.margin> </Button>
</TextField> <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">
<TextField fx:id="tfStecker10" prefHeight="25.0" prefWidth="48.0" GridPane.columnIndex="10" GridPane.rowIndex="8"> <font>
<GridPane.margin> <Font name="System Bold" size="18.0" />
<Insets left="10.0" right="10.0" /> </font>
</GridPane.margin> <GridPane.margin>
</TextField> <Insets left="34.0" />
<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"> </GridPane.margin>
<font> </Button>
<Font name="System Bold" size="18.0" /> <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>
</Button> <Font name="System Bold" size="18.0" />
<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> <GridPane.margin>
<Font name="System Bold" size="18.0" /> <Insets left="34.0" />
</font> </GridPane.margin>
<GridPane.margin> </Button>
<Insets left="34.0" /> <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">
</GridPane.margin> <font>
</Button> <Font name="System Bold" size="18.0" />
<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> <GridPane.margin>
<Font name="System Bold" size="18.0" /> <Insets left="34.0" />
</font> </GridPane.margin>
<GridPane.margin> </Button>
<Insets left="34.0" /> <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">
</GridPane.margin> <font>
</Button> <Font name="System Bold" size="18.0" />
<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> <GridPane.margin>
<Font name="System Bold" size="18.0" /> <Insets left="34.0" />
</font> </GridPane.margin>
<GridPane.margin> </Button>
<Insets left="34.0" /> <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">
</GridPane.margin> <font>
</Button> <Font name="System Bold" size="18.0" />
<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> </Button>
<Font name="System Bold" size="18.0" /> <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>
<GridPane.margin> <Font name="System Bold" size="18.0" />
<Insets left="34.0" /> </font>
</GridPane.margin> </Button>
</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="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> <Font name="System Bold" size="18.0" />
<Font name="System Bold" size="18.0" /> </font>
</font> </Button>
<GridPane.margin> <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">
<Insets left="34.0" /> <font>
</GridPane.margin> <Font name="System Bold" size="18.0" />
</Button> </font>
<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>
<font> <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 name="System Bold" size="18.0" /> <font>
</font> <Font name="System Bold" size="18.0" />
<GridPane.margin> </font>
<Insets left="34.0" /> </Button>
</GridPane.margin> <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> <font>
<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 name="System Bold" size="18.0" />
<font> </font>
<Font name="System Bold" size="18.0" /> </Button>
</font> <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">
<GridPane.margin> <font>
<Insets left="34.0" /> <Font name="System Bold" size="18.0" />
</GridPane.margin> </font>
</Button> </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="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>
<Font name="System Bold" size="18.0" /> <Font name="System Bold" size="18.0" />
</font> </font>
<GridPane.margin> <GridPane.margin>
<Insets left="34.0" /> <Insets left="34.0" />
</GridPane.margin> </GridPane.margin>
</Button> </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="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>
<Font name="System Bold" size="18.0" /> <Font name="System Bold" size="18.0" />
</font> </font>
<GridPane.margin> <GridPane.margin>
<Insets left="34.0" /> <Insets left="34.0" />
</GridPane.margin> </GridPane.margin>
</Button> </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="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>
<Font name="System Bold" size="18.0" /> <Font name="System Bold" size="18.0" />
</font> </font>
</Button> <GridPane.margin>
<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"> <Insets left="34.0" />
<font> </GridPane.margin>
<Font name="System Bold" size="18.0" /> </Button>
</font> <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> <font>
<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 name="System Bold" size="18.0" />
<font> </font>
<Font name="System Bold" size="18.0" /> <GridPane.margin>
</font> <Insets left="34.0" />
</Button> </GridPane.margin>
<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>
<font> <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 name="System Bold" size="18.0" /> <font>
</font> <Font name="System Bold" size="18.0" />
</Button> </font>
<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"> <GridPane.margin>
<font> <Insets left="34.0" />
<Font name="System Bold" size="18.0" /> </GridPane.margin>
</font> </Button>
</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="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> <Font name="System Bold" size="18.0" />
<Font name="System Bold" size="18.0" /> </font>
</font> <GridPane.margin>
</Button> <Insets left="34.0" />
<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"> </GridPane.margin>
<font> </Button>
<Font name="System Bold" size="18.0" /> <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>
</Button> <Font name="System Bold" size="18.0" />
<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> <GridPane.margin>
<Font name="System Bold" size="18.0" /> <Insets left="34.0" />
</font> </GridPane.margin>
<GridPane.margin> </Button>
<Insets left="34.0" /> <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">
</GridPane.margin> <font>
</Button> <Font name="System Bold" size="18.0" />
<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> <GridPane.margin>
<Font name="System Bold" size="18.0" /> <Insets left="34.0" />
</font> </GridPane.margin>
<GridPane.margin> </Button>
<Insets left="34.0" /> <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">
</GridPane.margin> <font>
</Button> <Font name="System Bold" size="18.0" />
<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> <GridPane.margin>
<Font name="System Bold" size="18.0" /> <Insets left="34.0" />
</font> </GridPane.margin>
<GridPane.margin> </Button>
<Insets left="34.0" /> <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="&lt;" textFill="#fffdfd" GridPane.columnIndex="10" GridPane.rowIndex="5">
</GridPane.margin> <font>
</Button> <Font size="18.0" />
<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> </Button>
<Font name="System Bold" size="18.0" /> <Circle fx:id="circQ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="1">
</font> <GridPane.margin>
<GridPane.margin> <Insets left="34.0" />
<Insets left="34.0" /> </GridPane.margin>
</GridPane.margin> </Circle>
</Button> <Circle fx:id="circP" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="1" GridPane.rowIndex="2">
<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"> <GridPane.margin>
<font> <Insets left="34.0" />
<Font name="System Bold" size="18.0" /> </GridPane.margin>
</font> </Circle>
<GridPane.margin> <Circle fx:id="circY" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" GridPane.rowIndex="2">
<Insets left="34.0" /> <GridPane.margin>
</GridPane.margin> <Insets left="34.0" />
</Button> </GridPane.margin>
<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"> </Circle>
<font> <Circle fx:id="circA" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" GridPane.rowIndex="1" />
<Font name="System Bold" size="18.0" /> <Circle fx:id="circS" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" GridPane.rowIndex="1" />
</font> <Circle fx:id="circX" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" GridPane.rowIndex="2">
<GridPane.margin> <GridPane.margin>
<Insets left="34.0" /> <Insets left="34.0" />
</GridPane.margin> </GridPane.margin>
</Button> </Circle>
<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"> <Circle fx:id="circW" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2">
<font> <GridPane.margin>
<Font name="System Bold" size="18.0" /> <Insets left="34.0" />
</font> </GridPane.margin>
<GridPane.margin> </Circle>
<Insets left="34.0" /> <Circle fx:id="circE" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3">
</GridPane.margin> <GridPane.margin>
</Button> <Insets left="34.0" />
<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"> </GridPane.margin>
<font> </Circle>
<Font name="System Bold" size="18.0" /> <Circle fx:id="circD" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4" GridPane.rowIndex="1" />
</font> <Circle fx:id="circC" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4" GridPane.rowIndex="2">
<GridPane.margin> <GridPane.margin>
<Insets left="34.0" /> <Insets left="34.0" />
</GridPane.margin> </GridPane.margin>
</Button> </Circle>
<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"> <Circle fx:id="circV" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="2">
<font> <GridPane.margin>
<Font name="System Bold" size="18.0" /> <Insets left="34.0" />
</font> </GridPane.margin>
<GridPane.margin> </Circle>
<Insets left="34.0" /> <Circle fx:id="circB" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="2">
</GridPane.margin> <GridPane.margin>
</Button> <Insets left="34.0" />
<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="&lt;" textFill="#fffdfd" GridPane.columnIndex="10" GridPane.rowIndex="5"> </GridPane.margin>
<font> </Circle>
<Font size="18.0" /> <Circle fx:id="circN" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" GridPane.rowIndex="2">
</font> <GridPane.margin>
</Button> <Insets left="34.0" />
<Circle fx:id="circQ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="1"> </GridPane.margin>
<GridPane.margin> </Circle>
<Insets left="34.0" /> <Circle fx:id="circM" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" GridPane.rowIndex="2">
</GridPane.margin> <GridPane.margin>
</Circle> <Insets left="34.0" />
<Circle fx:id="circP" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="1" GridPane.rowIndex="2"> </GridPane.margin>
<GridPane.margin> </Circle>
<Insets left="34.0" /> <Circle fx:id="circL" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9" GridPane.rowIndex="2">
</GridPane.margin> <GridPane.margin>
</Circle> <Insets left="34.0" />
<Circle fx:id="circY" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" GridPane.rowIndex="2"> </GridPane.margin>
<GridPane.margin> </Circle>
<Insets left="34.0" /> <Circle fx:id="circF" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="1" />
</GridPane.margin> <Circle fx:id="circG" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="1" />
</Circle> <Circle fx:id="circH" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" GridPane.rowIndex="1" />
<Circle fx:id="circA" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" 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="circS" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" 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="circX" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" GridPane.rowIndex="2"> <Circle fx:id="circR" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4">
<GridPane.margin> <GridPane.margin>
<Insets left="34.0" /> <Insets left="34.0" />
</GridPane.margin> </GridPane.margin>
</Circle> </Circle>
<Circle fx:id="circW" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2"> <Circle fx:id="circT" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5">
<GridPane.margin> <GridPane.margin>
<Insets left="34.0" /> <Insets left="34.0" />
</GridPane.margin> </GridPane.margin>
</Circle> </Circle>
<Circle fx:id="circE" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3"> <Circle fx:id="circZ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6">
<GridPane.margin> <GridPane.margin>
<Insets left="34.0" /> <Insets left="34.0" />
</GridPane.margin> </GridPane.margin>
</Circle> </Circle>
<Circle fx:id="circD" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4" GridPane.rowIndex="1" /> <Circle fx:id="circU" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7">
<Circle fx:id="circC" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4" GridPane.rowIndex="2"> <GridPane.margin>
<GridPane.margin> <Insets left="34.0" />
<Insets left="34.0" /> </GridPane.margin>
</GridPane.margin> </Circle>
</Circle> <Circle fx:id="circI" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8">
<Circle fx:id="circV" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="2"> <GridPane.margin>
<GridPane.margin> <Insets left="34.0" />
<Insets left="34.0" /> </GridPane.margin>
</GridPane.margin> </Circle>
</Circle> <Circle fx:id="circO" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9">
<Circle fx:id="circB" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="2"> <GridPane.margin>
<GridPane.margin> <Insets left="34.0" />
<Insets left="34.0" /> </GridPane.margin>
</GridPane.margin> </Circle>
</Circle> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="L" GridPane.columnIndex="9" GridPane.rowIndex="2">
<Circle fx:id="circN" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" GridPane.rowIndex="2"> <font>
<GridPane.margin> <Font size="23.0" />
<Insets left="34.0" /> </font>
</GridPane.margin> <GridPane.margin>
</Circle> <Insets bottom="5.0" left="42.0" />
<Circle fx:id="circM" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" GridPane.rowIndex="2"> </GridPane.margin>
<GridPane.margin> </Label>
<Insets left="34.0" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="M" GridPane.columnIndex="8" GridPane.rowIndex="2">
</GridPane.margin> <font>
</Circle> <Font size="23.0" />
<Circle fx:id="circL" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9" GridPane.rowIndex="2"> </font>
<GridPane.margin> <GridPane.margin>
<Insets left="34.0" /> <Insets bottom="5.0" left="42.0" />
</GridPane.margin> </GridPane.margin>
</Circle> </Label>
<Circle fx:id="circF" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="1" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="N" GridPane.columnIndex="7" GridPane.rowIndex="2">
<Circle fx:id="circG" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="1" /> <font>
<Circle fx:id="circH" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" GridPane.rowIndex="1" /> <Font size="23.0" />
<Circle fx:id="circJ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" GridPane.rowIndex="1" /> </font>
<Circle fx:id="circK" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9" GridPane.rowIndex="1" /> <GridPane.margin>
<Circle fx:id="circR" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4"> <Insets bottom="5.0" left="42.0" />
<GridPane.margin> </GridPane.margin>
<Insets left="34.0" /> </Label>
</GridPane.margin> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="B" GridPane.columnIndex="6" GridPane.rowIndex="2">
</Circle> <font>
<Circle fx:id="circT" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5"> <Font size="23.0" />
<GridPane.margin> </font>
<Insets left="34.0" /> <GridPane.margin>
</GridPane.margin> <Insets bottom="5.0" left="42.0" />
</Circle> </GridPane.margin>
<Circle fx:id="circZ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6"> </Label>
<GridPane.margin> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="V" GridPane.columnIndex="5" GridPane.rowIndex="2">
<Insets left="34.0" /> <font>
</GridPane.margin> <Font size="23.0" />
</Circle> </font>
<Circle fx:id="circU" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7"> <GridPane.margin>
<GridPane.margin> <Insets bottom="5.0" left="42.0" />
<Insets left="34.0" /> </GridPane.margin>
</GridPane.margin> </Label>
</Circle> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="C" GridPane.columnIndex="4" GridPane.rowIndex="2">
<Circle fx:id="circI" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8"> <font>
<GridPane.margin> <Font size="23.0" />
<Insets left="34.0" /> </font>
</GridPane.margin> <GridPane.margin>
</Circle> <Insets bottom="5.0" left="42.0" />
<Circle fx:id="circO" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9"> </GridPane.margin>
<GridPane.margin> </Label>
<Insets left="34.0" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="X" GridPane.columnIndex="3" GridPane.rowIndex="2">
</GridPane.margin> <font>
</Circle> <Font size="23.0" />
<Label fx:id="lblL" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="L" GridPane.columnIndex="9" GridPane.rowIndex="2"> </font>
<font> <GridPane.margin>
<Font size="23.0" /> <Insets bottom="5.0" left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="5.0" left="42.0" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="Y" GridPane.columnIndex="2" GridPane.rowIndex="2">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<Label fx:id="lblM" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="M" GridPane.columnIndex="8" GridPane.rowIndex="2"> </font>
<font> <GridPane.margin>
<Font size="23.0" /> <Insets bottom="5.0" left="41.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="5.0" left="42.0" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="P" GridPane.columnIndex="1" GridPane.rowIndex="2">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<Label fx:id="lblN" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="N" GridPane.columnIndex="7" GridPane.rowIndex="2"> </font>
<font> <GridPane.margin>
<Font size="23.0" /> <Insets bottom="5.0" left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="5.0" left="42.0" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="K" GridPane.columnIndex="9" GridPane.rowIndex="1">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<Label fx:id="lblB" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="B" GridPane.columnIndex="6" GridPane.rowIndex="2"> </font>
<font> <GridPane.margin>
<Font size="23.0" /> <Insets bottom="2.0" left="7.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="5.0" left="42.0" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="J" GridPane.columnIndex="8" GridPane.rowIndex="1">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<Label fx:id="lblV" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="V" GridPane.columnIndex="5" GridPane.rowIndex="2"> </font>
<font> <GridPane.margin>
<Font size="23.0" /> <Insets bottom="2.0" left="7.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="5.0" left="42.0" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="27.0" prefWidth="25.0" text="H" GridPane.columnIndex="7" GridPane.rowIndex="1">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<Label fx:id="lblC" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="C" GridPane.columnIndex="4" GridPane.rowIndex="2"> </font>
<font> <GridPane.margin>
<Font size="23.0" /> <Insets bottom="4.0" left="9.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="5.0" left="42.0" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="G" GridPane.columnIndex="6" GridPane.rowIndex="1">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<Label fx:id="lblX" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="X" GridPane.columnIndex="3" GridPane.rowIndex="2"> </font>
<font> <GridPane.margin>
<Font size="23.0" /> <Insets bottom="2.0" left="7.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="5.0" left="42.0" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="F" GridPane.columnIndex="5" GridPane.rowIndex="1">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<Label fx:id="lblY" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="Y" GridPane.columnIndex="2" GridPane.rowIndex="2"> </font>
<font> <GridPane.margin>
<Font size="23.0" /> <Insets bottom="2.0" left="7.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="5.0" left="41.0" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="D" GridPane.columnIndex="4" GridPane.rowIndex="1">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<Label fx:id="lblP" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="P" GridPane.columnIndex="1" GridPane.rowIndex="2"> </font>
<font> <GridPane.margin>
<Font size="23.0" /> <Insets bottom="2.0" left="7.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="5.0" left="42.0" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="S" GridPane.columnIndex="3" GridPane.rowIndex="1">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<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> <GridPane.margin>
<Font size="23.0" /> <Insets bottom="2.0" left="7.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="2.0" left="7.0" /> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="A" GridPane.columnIndex="2" GridPane.rowIndex="1">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<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> <GridPane.margin>
<Font size="23.0" /> <Insets bottom="2.0" left="7.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="2.0" left="7.0" /> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="O" textAlignment="CENTER" GridPane.columnIndex="9">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<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> <GridPane.margin>
<Font size="23.0" /> <Insets left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="4.0" left="9.0" /> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="I" textAlignment="CENTER" GridPane.columnIndex="8">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<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> <GridPane.margin>
<Font size="23.0" /> <Insets left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="2.0" left="7.0" /> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="U" textAlignment="CENTER" GridPane.columnIndex="7">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<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> <GridPane.margin>
<Font size="23.0" /> <Insets left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="2.0" left="7.0" /> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Z" textAlignment="CENTER" GridPane.columnIndex="6">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<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> <GridPane.margin>
<Font size="23.0" /> <Insets left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="2.0" left="7.0" /> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="T" textAlignment="CENTER" GridPane.columnIndex="5">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<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> <GridPane.margin>
<Font size="23.0" /> <Insets left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="2.0" left="7.0" /> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="R" textAlignment="CENTER" GridPane.columnIndex="4">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<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> <GridPane.margin>
<Font size="23.0" /> <Insets left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="2.0" left="7.0" /> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="E" textAlignment="CENTER" GridPane.columnIndex="3">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<Label fx:id="lblO" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="O" textAlignment="CENTER" GridPane.columnIndex="9"> </font>
<font> <GridPane.margin>
<Font size="23.0" /> <Insets left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets left="42.0" /> <Label alignment="CENTER" prefHeight="36.0" prefWidth="30.0" text="W" GridPane.columnIndex="2">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<Label fx:id="lblI" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="I" textAlignment="CENTER" GridPane.columnIndex="8"> </font>
<font> <GridPane.margin>
<Font size="23.0" /> <Insets left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets left="42.0" /> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Q" GridPane.columnIndex="1">
</GridPane.margin> <font>
</Label> <Font size="23.0" />
<Label fx:id="lblU" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="U" textAlignment="CENTER" GridPane.columnIndex="7"> </font>
<font> <GridPane.margin>
<Font size="23.0" /> <Insets left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets left="42.0" /> </GridPane>
</GridPane.margin> <GridPane layoutX="297.0" layoutY="64.0" prefHeight="168.0" prefWidth="585.0">
</Label>
<Label fx:id="lblZ" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Z" textAlignment="CENTER" GridPane.columnIndex="6">
<font>
<Font size="23.0" />
</font>
<GridPane.margin>
<Insets left="42.0" />
</GridPane.margin>
</Label>
<Label fx:id="lblT" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="T" textAlignment="CENTER" GridPane.columnIndex="5">
<font>
<Font size="23.0" />
</font>
<GridPane.margin>
<Insets left="42.0" />
</GridPane.margin>
</Label>
<Label fx:id="lblR" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="R" textAlignment="CENTER" GridPane.columnIndex="4">
<font>
<Font size="23.0" />
</font>
<GridPane.margin>
<Insets left="42.0" />
</GridPane.margin>
</Label>
<Label fx:id="lblE" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="E" textAlignment="CENTER" GridPane.columnIndex="3">
<font>
<Font size="23.0" />
</font>
<GridPane.margin>
<Insets left="42.0" />
</GridPane.margin>
</Label>
<Label fx:id="lblW" alignment="CENTER" prefHeight="36.0" prefWidth="30.0" text="W" GridPane.columnIndex="2">
<font>
<Font size="23.0" />
</font>
<GridPane.margin>
<Insets left="42.0" />
</GridPane.margin>
</Label>
<Label fx:id="lblQ" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Q" GridPane.columnIndex="1">
<font>
<Font size="23.0" />
</font>
<GridPane.margin>
<Insets left="42.0" />
</GridPane.margin>
</Label>
<Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="7" />
</children>
</GridPane>
<Label layoutX="684.0" layoutY="-164.0" prefHeight="17.0" prefWidth="195.0" />
<GridPane layoutX="297.0" layoutY="64.0" prefHeight="168.0" prefWidth="585.0">
<columnConstraints> <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> </columnConstraints>
<rowConstraints> <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> </rowConstraints>
<children> <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="tfKlartext" editable="false" prefHeight="70.0" prefWidth="293.0"> <GridPane.margin>
<GridPane.margin> <Insets left="80.0" />
<Insets /> </GridPane.margin>
</GridPane.margin> </Button>
</TextField> <Button fx:id="btnEmpfangen" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="70.0" prefWidth="195.0" text="Funkspruch empfangen" GridPane.columnIndex="1" GridPane.rowIndex="1">
<TextField fx:id="tfCodiert" editable="false" prefHeight="70.0" prefWidth="293.0" GridPane.rowIndex="1" /> <GridPane.margin>
<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"> <Insets left="80.0" />
<GridPane.margin> </GridPane.margin>
<Insets left="80.0" /> </Button>
</GridPane.margin> <TextArea fx:id="tfKlartext" prefHeight="66.0" prefWidth="293.0" wrapText="true">
</Button> <GridPane.margin>
<Button fx:id="btnEmpfangen" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="70.0" prefWidth="195.0" text="Funkspruch empfangen" GridPane.columnIndex="1" GridPane.rowIndex="1"> <Insets bottom="5.0" top="5.0" />
<GridPane.margin> </GridPane.margin>
<Insets left="80.0" /> </TextArea>
</GridPane.margin> <TextArea fx:id="tfCodiert" prefHeight="200.0" prefWidth="200.0" wrapText="true" GridPane.rowIndex="1">
</Button> <GridPane.margin>
</children> <Insets bottom="5.0" top="5.0" />
</GridPane> </GridPane.margin>
</children> </TextArea>
</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 layoutX="79.0" layoutY="27.0" text="Kommunikation mit Funkraum...">
<font>
<Font size="14.0" />
</font>
</Label>
</Pane>
</AnchorPane> </AnchorPane>
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="137.0" prefWidth="234.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="projekt.enigma.KenngruppeController">
<children>
<VBox layoutX="13.0" layoutY="20.0" prefHeight="107.0" prefWidth="209.0" AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="13.0" AnchorPane.rightAnchor="12.0" AnchorPane.topAnchor="20.0">
<children>
<Label alignment="CENTER" contentDisplay="CENTER" prefHeight="17.0" prefWidth="208.0" text="Bitte Kenngruppe eingeben!" />
<Label prefHeight="62.0" prefWidth="209.0" />
<TextField fx:id="tfKenngruppe" />
<Label prefHeight="39.0" prefWidth="209.0" />
<Button maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" onAction="#btnGui" prefHeight="25.0" prefWidth="212.0" text="Kenngruppe setzen!" />
</children>
</VBox>
</children>
</AnchorPane>
...@@ -11,9 +11,6 @@ public class HardwareTest { ...@@ -11,9 +11,6 @@ public class HardwareTest {
Hardware h = new Hardware(); Hardware h = new Hardware();
h.setReflektor(new Reflektor()); h.setReflektor(new Reflektor());
h.setSteckbrett(new Steckbrett()); h.setSteckbrett(new Steckbrett());
h.setWalzen(0, 1, 1);
h.setWalzen(1, 2, 1);
h.setWalzen(2, 3, 1);
/* /*
Walze nach der Chiffrierung Walze nach der Chiffrierung
...@@ -21,34 +18,40 @@ public class HardwareTest { ...@@ -21,34 +18,40 @@ public class HardwareTest {
Steckbrett "W S L V H Y G I X A" Steckbrett "W S L V H Y G I X A"
Steckbrett "J E F B K P M Q U C" Steckbrett "J E F B K P M Q U C"
Walze 3 "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" Walze 3 "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"
Walze 2 "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" Walze 2 "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"
Walze 1 "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" Walze 1 "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"
Reflektor "E J M Z A L Y X V B W F C R Q U O N T S P I K H G D" Reflektor "E J M Z A L Y X V B W F C R Q U O N T S P I K H G D"
*/ */
char result; char result;
h.resetWalzen(); h.setWalzen(0, 2, 25);
h.setWalzen(1, 5, 25);
h.setWalzen(2, 1, 25);
result = h.codiere('A'); result = h.codiere('A');
Assert.assertEquals("Codiere: A Erwartet P, erhalten " + result, 'P', result); Assert.assertEquals("Codiere: A Erwartet N, erhalten " + result, 'N', result);
result = h.codiere('B'); result = h.codiere('B');
Assert.assertEquals("Codiere: B Erwartet R, erhalten " + result, 'R', result); Assert.assertEquals("Codiere: B Erwartet K, erhalten " + result, 'K', result);
result = h.codiere('I'); result = h.codiere('I');
Assert.assertEquals("Codiere: I Erwartet E, erhalten " + result, 'E', result); Assert.assertEquals("Codiere: I Erwartet V, erhalten " + result, 'V', result);
result = h.codiere('F'); result = h.codiere('F');
Assert.assertEquals("Codiere: F Erwartet A, erhalten " + result, 'A', result); Assert.assertEquals("Codiere: F Erwartet T, erhalten " + result, 'T', result);
h.resetWalzen(); h.setWalzen(0, 2, 25);
result = h.codiere('P'); h.setWalzen(1, 5, 25);
Assert.assertEquals("Decodiere: P Erwartet A, erhalten " + result, 'A', result); h.setWalzen(2, 1, 25);
result = h.codiere('R'); result = h.codiere('N');
Assert.assertEquals("Decodiere: R Erwartet B, erhalten " + result, 'B', result); Assert.assertEquals("Decodiere: N Erwartet A, erhalten " + result, 'A', result);
result = h.codiere('E'); result = h.codiere('K');
Assert.assertEquals("Decodiere: E Erwartet I, erhalten " + result, 'I', result); Assert.assertEquals("Decodiere: K Erwartet B, erhalten " + result, 'B', result);
result = h.codiere('A'); result = h.codiere('V');
Assert.assertEquals("Decodiere: A Erwartet F, erhalten " + result, 'F', result); Assert.assertEquals("Decodiere: V Erwartet I, erhalten " + result, 'I', result);
result = h.codiere('T');
Assert.assertEquals("Decodiere: T Erwartet F, erhalten " + result, 'F', result);
h.resetWalzen(); h.setWalzen(0, 2, 25);
h.setWalzen(1, 5, 25);
h.setWalzen(2, 1, 25);
h.getSteckbrett().setzeVertauschung('B', 'G'); h.getSteckbrett().setzeVertauschung('B', 'G');
h.getSteckbrett().setzeVertauschung('D', 'F'); h.getSteckbrett().setzeVertauschung('D', 'F');
h.getSteckbrett().setzeVertauschung('I', 'L'); h.getSteckbrett().setzeVertauschung('I', 'L');
...@@ -60,10 +63,20 @@ public class HardwareTest { ...@@ -60,10 +63,20 @@ public class HardwareTest {
h.getSteckbrett().setzeVertauschung('E', 'S'); h.getSteckbrett().setzeVertauschung('E', 'S');
result = h.codiere('I'); result = h.codiere('I');
Assert.assertEquals("Codiere: I Erwartet F, erhalten " + result, 'D', result); Assert.assertEquals("Codiere: I Erwartet C, erhalten " + result, 'C', result);
h.setWalzen(0, 2, 25);
h.setWalzen(1, 5, 25);
h.setWalzen(2, 1, 25);
result = h.codiere('C');
Assert.assertEquals("Codiere: C Erwartet I, erhalten " + result, 'I', result);
h.resetWalzen(); h.setWalzen(0, 2, 25);
result = h.codiere('D'); h.setWalzen(1, 5, 25);
Assert.assertEquals("Codiere: D Erwartet I, erhalten " + result, 'I', result); h.setWalzen(2, 1, 25);
h.getSteckbrett().setzeVertauschung('A', 'B');
h.getSteckbrett().setzeVertauschung('C', 'D');
result = h.codiere('A');
Assert.assertEquals("Codiere: A Erwartet M, erhalten " + result, 'M', result);
} }
} }
\ No newline at end of file