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;
}
}
package projekt.enigma.view;
import java.awt.*;
import javax.swing.*;
public class ChkBoxPanel extends JPanel {
/*private static JPanel panel = new JPanel();*/
private static JCheckBox[] checkbox;
private static Character[] alphabet;/* = {'A','B','C','D'};*/
private static int charSize;
public ChkBoxPanel(Character[] alphabet) {
this.charSize = alphabet.length;
this.alphabet = alphabet;
/*this.setTitle("Vertausche Buchstaben");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*/
this.setSize(30, charSize * 25);
//this.setLocation(getMousePosition()/*.x, getMousePosition().y+this.getHeight()+30*/);
initializeComponents();
}
private void initializeComponents() {
this.checkbox = new JCheckBox[charSize];
GridLayout panelLayout = new GridLayout();
this.setLayout(panelLayout);
if (!(charSize % 2 == 0)) {
this.setSize(30, (charSize + 1) * 20);
panelLayout.setRows((charSize + 1) / 2);
} else {
this.setSize(30, charSize * 10);
panelLayout.setRows(charSize / 2);
}
panelLayout.setColumns(2);
//panelLayout.setVgap(5);
//panelLayout.setHgap(-5);
for (int i = 0; i < charSize; i++) {
checkbox[i] = new JCheckBox(alphabet[i] + "");
checkbox[i].setSize(15, 20);
checkbox[i].setHorizontalTextPosition(SwingConstants.CENTER);
checkbox[i].setVerticalTextPosition(SwingConstants.TOP);
/* if (!(i%2==0)){
}*/
checkbox[i].setMargin(new Insets(0, 20, 0, 20));
//checkbox[i].setLocation(20, (i + 1) * 30);
this.add(checkbox[i]);
}
/* this.getContentPane().add(panel);*/
checkbox[0].setSelected(true);
//this.add(panel);
//this.setLocation(100, 100);
this.setVisible(true);
}
private int isChecked() {
for (int i = 0; i < charSize; i++) {
if (checkbox[i].isSelected()) {
// do something...
} else {
// do something else...
}
}
return 0;
}
}
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?> <?import javafx.geometry.Insets?>
<?import javafx.scene.control.*?> <?import javafx.scene.control.Button?>
<?import javafx.scene.layout.*?> <?import javafx.scene.control.Label?>
<?import javafx.scene.shape.*?> <?import javafx.scene.control.MenuButton?>
<?import javafx.scene.text.*?> <?import javafx.scene.control.ProgressIndicator?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.shape.Circle?>
<?import javafx.scene.text.Font?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="677.0" <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">
prefWidth="962.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" <GridPane layoutX="23.0" layoutY="60.0" prefHeight="158.0" prefWidth="237.0" AnchorPane.leftAnchor="23.0" AnchorPane.topAnchor="60.0">
fx:controller="projekt.enigma.GuiController"> <columnConstraints>
<children> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<GridPane layoutX="23.0" layoutY="60.0" prefHeight="158.0" prefWidth="237.0" AnchorPane.leftAnchor="23.0" <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
AnchorPane.topAnchor="60.0"> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<columnConstraints> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> </columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <rowConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</columnConstraints> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<rowConstraints> </rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> <Label text="Walze" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> <Label text="Ringe" GridPane.rowIndex="1" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> <Label text="Position" GridPane.rowIndex="2" />
</rowConstraints> <MenuButton fx:id="mBtnWalzPos1" alignment="CENTER_RIGHT" contentDisplay="CENTER" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" GridPane.columnIndex="1">
<children> </MenuButton>
<Label text="Walze"/> <MenuButton fx:id="mBtnWalzPos2" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" textAlignment="CENTER" GridPane.columnIndex="2">
<Label text="Ringe" GridPane.rowIndex="1"/> </MenuButton>
<Label text="Position" GridPane.rowIndex="2"/> <MenuButton fx:id="mBtnWalzPos3" mnemonicParsing="false" popupSide="TOP" prefHeight="25.0" prefWidth="48.0" text="I" textAlignment="CENTER" GridPane.columnIndex="3">
<MenuButton fx:id="mBtnWalzPos1" alignment="CENTER_RIGHT" contentDisplay="CENTER" </MenuButton>
mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="I" <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" />
GridPane.columnIndex="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="mBtnWalzPos2" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" <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">
prefWidth="48.0" text="I" textAlignment="CENTER" GridPane.columnIndex="2"> </MenuButton>
</MenuButton> <MenuButton fx:id="mBtnStartPos1" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" prefWidth="48.0" text="A" textAlignment="CENTER" GridPane.columnIndex="1" GridPane.rowIndex="2">
<MenuButton fx:id="mBtnWalzPos3" mnemonicParsing="false" popupSide="TOP" prefHeight="25.0" </MenuButton>
prefWidth="48.0" text="I" textAlignment="CENTER" GridPane.columnIndex="3"> <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>
<MenuButton fx:id="mBtnNotchPos1" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" <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">
prefWidth="48.0" text="1" textAlignment="CENTER" GridPane.columnIndex="1" </MenuButton>
GridPane.rowIndex="1"/> </GridPane>
<MenuButton fx:id="mBtnNotchPos2" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" <GridPane layoutX="23.0" layoutY="222.0" prefHeight="60.0" prefWidth="270.0" AnchorPane.leftAnchor="23.0" AnchorPane.topAnchor="222.0">
prefWidth="48.0" text="1" textAlignment="CENTER" GridPane.columnIndex="2" <columnConstraints>
GridPane.rowIndex="1"> <ColumnConstraints hgrow="SOMETIMES" maxWidth="206.0" minWidth="10.0" prefWidth="102.0" />
</MenuButton> <ColumnConstraints hgrow="SOMETIMES" maxWidth="224.0" minWidth="10.0" prefWidth="168.0" />
<!-- <MenuButton layoutX="93.0" layoutY="114.0" mnemonicParsing="false">--> </columnConstraints>
<!-- <items>--> <rowConstraints>
<!-- <MenuItem mnemonicParsing="false" onAction="#z1" text="1" />--> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z2" text="2" />--> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z3" text="3" />--> </rowConstraints>
<!-- <MenuItem mnemonicParsing="false" onAction="#z4" text="4" />--> <Label alignment="CENTER_RIGHT" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z5" text="5" />--> <Label text="Spruchschlüssel:" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z6" text="6" />--> <Label fx:id="lblSpruchschluessel" prefHeight="17.0" prefWidth="181.0" GridPane.columnIndex="1" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z7" text="7" />--> <Button fx:id="btnReset" mnemonicParsing="false" onAction="#gedrueckteTaste" text="Zurücksetzen" GridPane.rowIndex="1" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z8" text="8" />--> </GridPane>
<!-- <MenuItem mnemonicParsing="false" onAction="#z9" text="9" />--> <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">
<!-- <MenuItem mnemonicParsing="false" onAction="#z10" text="10" />--> <columnConstraints>
<!-- <MenuItem mnemonicParsing="false" onAction="#z11" text="11" />--> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z12" text="12" />--> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z13" text="13" />--> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z14" text="14" />--> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z15" text="15" />--> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z16" text="16" />--> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z17" text="17" />--> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z18" text="18" />--> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z19" text="19" />--> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z20" text="20" />--> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z21" text="21" />--> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z22" text="22" />--> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z23" text="23" />--> </columnConstraints>
<!-- <MenuItem mnemonicParsing="false" onAction="#z24" text="24" />--> <rowConstraints>
<!-- <MenuItem mnemonicParsing="false" onAction="#z25" text="25" />--> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<!-- <MenuItem mnemonicParsing="false" onAction="#z26" text="26" />--> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<!-- </items>--> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<!-- </MenuButton>--> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<MenuButton fx:id="mBtnNotchPos3" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
prefWidth="48.0" text="1" textAlignment="CENTER" GridPane.columnIndex="3" <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
GridPane.rowIndex="1"> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</MenuButton> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<MenuButton fx:id="mBtnStartPos1" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
prefWidth="48.0" text="A" textAlignment="CENTER" GridPane.columnIndex="1" </rowConstraints>
GridPane.rowIndex="2"> <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">
</MenuButton> <font>
<MenuButton fx:id="mBtnStartPos2" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" <Font name="System Bold" size="18.0" />
prefWidth="48.0" text="A" textAlignment="CENTER" GridPane.columnIndex="2" </font>
GridPane.rowIndex="2"> </Button>
</MenuButton> <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">
<MenuButton fx:id="mBtnStartPos3" alignment="CENTER_RIGHT" mnemonicParsing="false" prefHeight="25.0" <font>
prefWidth="48.0" text="A" textAlignment="CENTER" GridPane.columnIndex="3" <Font name="System Bold" size="18.0" />
GridPane.rowIndex="2"> </font>
</MenuButton> <GridPane.margin>
</children> <Insets left="34.0" />
</GridPane> </GridPane.margin>
<GridPane layoutX="23.0" layoutY="222.0" prefHeight="60.0" prefWidth="270.0" AnchorPane.leftAnchor="23.0" </Button>
AnchorPane.topAnchor="222.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">
<columnConstraints> <font>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="206.0" minWidth="10.0" prefWidth="102.0"/> <Font name="System Bold" size="18.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="224.0" minWidth="10.0" prefWidth="168.0"/> </font>
</columnConstraints> <GridPane.margin>
<rowConstraints> <Insets left="34.0" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> </GridPane.margin>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> </Button>
</rowConstraints> <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">
<children> <font>
<Label alignment="CENTER_RIGHT"/> <Font name="System Bold" size="18.0" />
<Label text="Spruchschlüssel:"/> </font>
<Label fx:id="lblTagesschluessel" prefHeight="17.0" prefWidth="181.0" GridPane.columnIndex="1"/> <GridPane.margin>
<Label fx:id="lblSpruchschluessel" prefHeight="17.0" prefWidth="181.0" GridPane.columnIndex="1"/> <Insets left="34.0" />
<Button fx:id="btnReset" mnemonicParsing="false" onAction="#gedrueckteTaste" text="Zurücksetzen" </GridPane.margin>
GridPane.rowIndex="1"/> </Button>
</children> <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">
</GridPane> <font>
<GridPane fx:id="mainGrid" layoutX="6.0" layoutY="294.0" prefHeight="377.0" prefWidth="952.0" <Font name="System Bold" size="18.0" />
AnchorPane.bottomAnchor="6.0" AnchorPane.leftAnchor="6.0" AnchorPane.rightAnchor="9.0" </font>
AnchorPane.topAnchor="294.0"> <GridPane.margin>
<columnConstraints> <Insets left="34.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> </GridPane.margin>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> </Button>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <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">
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <font>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <Font name="System Bold" size="18.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> </font>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <GridPane.margin>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <Insets left="34.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> </GridPane.margin>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> </Button>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <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">
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <font>
</columnConstraints> <Font name="System Bold" size="18.0" />
<rowConstraints> </font>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> <GridPane.margin>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> <Insets left="34.0" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> </GridPane.margin>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> </Button>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> <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">
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> <font>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> <Font name="System Bold" size="18.0" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> </font>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> <GridPane.margin>
</rowConstraints> <Insets left="34.0" />
<children> </GridPane.margin>
<Button fx:id="btnA" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" </Button>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.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">
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="A" textFill="#fffdfd" <font>
GridPane.columnIndex="2" 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="btnP" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" </Button>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.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">
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="P" textFill="#fffdfd" <font>
GridPane.columnIndex="1" GridPane.rowIndex="6"> <Font name="System Bold" size="18.0" />
<font> </font>
<Font name="System Bold" size="18.0"/> <GridPane.margin>
</font> <Insets left="34.0" />
<GridPane.margin> </GridPane.margin>
<Insets left="34.0"/> </Button>
</GridPane.margin> <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> <font>
<Button fx:id="btnY" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <Font name="System Bold" size="18.0" />
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" </font>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Y" textFill="#fffdfd" </Button>
GridPane.columnIndex="2" GridPane.rowIndex="6"> <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>
<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="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">
</GridPane.margin> <font>
</Button> <Font name="System Bold" size="18.0" />
<Button fx:id="btnX" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" </font>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" </Button>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="X" textFill="#fffdfd" <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">
GridPane.columnIndex="3" 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="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">
<Insets left="34.0"/> <font>
</GridPane.margin> <Font name="System Bold" size="18.0" />
</Button> </font>
<Button fx:id="btnC" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" </Button>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <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">
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="C" textFill="#fffdfd" <font>
GridPane.columnIndex="4" 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="btnV" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <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">
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <font>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="V" textFill="#fffdfd" <Font name="System Bold" size="18.0" />
GridPane.columnIndex="5" 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="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">
</GridPane.margin> <font>
</Button> <Font name="System Bold" size="18.0" />
<Button fx:id="btnB" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" </font>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <GridPane.margin>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="B" textFill="#fffdfd" <Insets left="34.0" />
GridPane.columnIndex="6" GridPane.rowIndex="6"> </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="btnN" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" </GridPane.margin>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" </Button>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="N" textFill="#fffdfd" <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">
GridPane.columnIndex="7" GridPane.rowIndex="6"> <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="btnT" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="T" textFill="#fffdfd" GridPane.columnIndex="5" GridPane.rowIndex="4">
<Button fx:id="btnM" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <font>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <Font name="System Bold" size="18.0" />
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="M" textFill="#fffdfd" </font>
GridPane.columnIndex="8" GridPane.rowIndex="6"> <GridPane.margin>
<font> <Insets left="34.0" />
<Font name="System Bold" size="18.0"/> </GridPane.margin>
</font> </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">
<Insets left="34.0"/> <font>
</GridPane.margin> <Font name="System Bold" size="18.0" />
</Button> </font>
<Button fx:id="btnL" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <GridPane.margin>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <Insets left="34.0" />
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="L" textFill="#fffdfd" </GridPane.margin>
GridPane.columnIndex="9" GridPane.rowIndex="6"> </Button>
<font> <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 name="System Bold" size="18.0"/> <font>
</font> <Font name="System Bold" size="18.0" />
<GridPane.margin> </font>
<Insets left="34.0"/> <GridPane.margin>
</GridPane.margin> <Insets left="34.0" />
</Button> </GridPane.margin>
<Button fx:id="btnS" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" </Button>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.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">
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="S" textFill="#fffdfd" <font>
GridPane.columnIndex="3" 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="btnD" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" </Button>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.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">
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="D" textFill="#fffdfd" <font>
GridPane.columnIndex="4" 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="btnF" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" </Button>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.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">
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="F" textFill="#fffdfd" <font>
GridPane.columnIndex="5" GridPane.rowIndex="5"> <Font size="18.0" />
<font> </font>
<Font name="System Bold" size="18.0"/> </Button>
</font> <Circle fx:id="circQ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="1">
</Button> <GridPane.margin>
<Button fx:id="btnG" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <Insets left="34.0" />
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" </GridPane.margin>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="G" textFill="#fffdfd" </Circle>
GridPane.columnIndex="6" GridPane.rowIndex="5"> <Circle fx:id="circP" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="1" GridPane.rowIndex="2">
<font> <GridPane.margin>
<Font name="System Bold" size="18.0"/> <Insets left="34.0" />
</font> </GridPane.margin>
</Button> </Circle>
<Button fx:id="btnH" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <Circle fx:id="circY" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" GridPane.rowIndex="2">
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <GridPane.margin>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="H" textFill="#fffdfd" <Insets left="34.0" />
GridPane.columnIndex="7" GridPane.rowIndex="5"> </GridPane.margin>
<font> </Circle>
<Font name="System Bold" size="18.0"/> <Circle fx:id="circA" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2" GridPane.rowIndex="1" />
</font> <Circle fx:id="circS" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" GridPane.rowIndex="1" />
</Button> <Circle fx:id="circX" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3" GridPane.rowIndex="2">
<Button fx:id="btnJ" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <GridPane.margin>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <Insets left="34.0" />
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="J" textFill="#fffdfd" </GridPane.margin>
GridPane.columnIndex="8" GridPane.rowIndex="5"> </Circle>
<font> <Circle fx:id="circW" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="2">
<Font name="System Bold" size="18.0"/> <GridPane.margin>
</font> <Insets left="34.0" />
</Button> </GridPane.margin>
<Button fx:id="btnK" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" </Circle>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <Circle fx:id="circE" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="3">
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="K" textFill="#fffdfd" <GridPane.margin>
GridPane.columnIndex="9" GridPane.rowIndex="5"> <Insets left="34.0" />
<font> </GridPane.margin>
<Font name="System Bold" size="18.0"/> </Circle>
</font> <Circle fx:id="circD" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4" GridPane.rowIndex="1" />
</Button> <Circle fx:id="circC" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4" GridPane.rowIndex="2">
<Button fx:id="btnQ" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <GridPane.margin>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <Insets left="34.0" />
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Q" textFill="#fffdfd" </GridPane.margin>
GridPane.columnIndex="1" GridPane.rowIndex="4"> </Circle>
<font> <Circle fx:id="circV" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="2">
<Font name="System Bold" size="18.0"/> <GridPane.margin>
</font> <Insets left="34.0" />
<GridPane.margin> </GridPane.margin>
<Insets left="34.0"/> </Circle>
</GridPane.margin> <Circle fx:id="circB" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="2">
</Button> <GridPane.margin>
<Button fx:id="btnW" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <Insets left="34.0" />
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" </GridPane.margin>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="W" textFill="#fffdfd" </Circle>
GridPane.columnIndex="2" GridPane.rowIndex="4"> <Circle fx:id="circN" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" 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="circM" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" GridPane.rowIndex="2">
</GridPane.margin> <GridPane.margin>
</Button> <Insets left="34.0" />
<Button fx:id="btnE" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" </GridPane.margin>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" </Circle>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="E" textFill="#fffdfd" <Circle fx:id="circL" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9" GridPane.rowIndex="2">
GridPane.columnIndex="3" 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="circF" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="5" GridPane.rowIndex="1" />
<Insets left="34.0"/> <Circle fx:id="circG" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6" GridPane.rowIndex="1" />
</GridPane.margin> <Circle fx:id="circH" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7" GridPane.rowIndex="1" />
</Button> <Circle fx:id="circJ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8" GridPane.rowIndex="1" />
<Button fx:id="btnR" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <Circle fx:id="circK" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9" GridPane.rowIndex="1" />
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <Circle fx:id="circR" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="4">
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="R" textFill="#fffdfd" <GridPane.margin>
GridPane.columnIndex="4" GridPane.rowIndex="4"> <Insets left="34.0" />
<font> </GridPane.margin>
<Font name="System Bold" size="18.0"/> </Circle>
</font> <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>
</Button> </Circle>
<Button fx:id="btnT" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <Circle fx:id="circZ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="6">
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <GridPane.margin>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="T" textFill="#fffdfd" <Insets left="34.0" />
GridPane.columnIndex="5" GridPane.rowIndex="4"> </GridPane.margin>
<font> </Circle>
<Font name="System Bold" size="18.0"/> <Circle fx:id="circU" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="7">
</font> <GridPane.margin>
<GridPane.margin> <Insets left="34.0" />
<Insets left="34.0"/> </GridPane.margin>
</GridPane.margin> </Circle>
</Button> <Circle fx:id="circI" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="8">
<Button fx:id="btnZ" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <GridPane.margin>
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <Insets left="34.0" />
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="Z" textFill="#fffdfd" </GridPane.margin>
GridPane.columnIndex="6" GridPane.rowIndex="4"> </Circle>
<font> <Circle fx:id="circO" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" GridPane.columnIndex="9">
<Font name="System Bold" size="18.0"/> <GridPane.margin>
</font> <Insets left="34.0" />
<GridPane.margin> </GridPane.margin>
<Insets left="34.0"/> </Circle>
</GridPane.margin> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="L" GridPane.columnIndex="9" GridPane.rowIndex="2">
</Button> <font>
<Button fx:id="btnU" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <Font size="23.0" />
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" </font>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="U" textFill="#fffdfd" <GridPane.margin>
GridPane.columnIndex="7" GridPane.rowIndex="4"> <Insets bottom="5.0" left="42.0" />
<font> </GridPane.margin>
<Font name="System Bold" size="18.0"/> </Label>
</font> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="M" GridPane.columnIndex="8" GridPane.rowIndex="2">
<GridPane.margin> <font>
<Insets left="34.0"/> <Font size="23.0" />
</GridPane.margin> </font>
</Button> <GridPane.margin>
<Button fx:id="btnI" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <Insets bottom="5.0" left="42.0" />
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" </GridPane.margin>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="I" textFill="#fffdfd" </Label>
GridPane.columnIndex="8" GridPane.rowIndex="4"> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="N" GridPane.columnIndex="7" GridPane.rowIndex="2">
<font> <font>
<Font name="System Bold" size="18.0"/> <Font size="23.0" />
</font> </font>
<GridPane.margin> <GridPane.margin>
<Insets left="34.0"/> <Insets bottom="5.0" left="42.0" />
</GridPane.margin> </GridPane.margin>
</Button> </Label>
<Button fx:id="btnO" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="B" GridPane.columnIndex="6" GridPane.rowIndex="2">
onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" <font>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="O" textFill="#fffdfd" <Font size="23.0" />
GridPane.columnIndex="9" GridPane.rowIndex="4"> </font>
<font> <GridPane.margin>
<Font name="System Bold" size="18.0"/> <Insets bottom="5.0" left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets left="34.0"/> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="V" GridPane.columnIndex="5" GridPane.rowIndex="2">
</GridPane.margin> <font>
</Button> <Font size="23.0" />
<Button fx:id="btnDelete" minHeight="35.0" mnemonicParsing="false" onAction="#gedrueckteTaste" </font>
prefHeight="43.0" prefWidth="45.0" <GridPane.margin>
style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="&lt;" <Insets bottom="5.0" left="42.0" />
textFill="#fffdfd" GridPane.columnIndex="10" GridPane.rowIndex="5"> </GridPane.margin>
<font> </Label>
<Font size="18.0"/> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="C" GridPane.columnIndex="4" GridPane.rowIndex="2">
</font> <font>
</Button> <Font size="23.0" />
<Circle fx:id="circQ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </font>
GridPane.columnIndex="1"> <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="X" GridPane.columnIndex="3" GridPane.rowIndex="2">
<Circle fx:id="circP" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <font>
GridPane.columnIndex="1" GridPane.rowIndex="2"> <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="circY" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </Label>
GridPane.columnIndex="2" GridPane.rowIndex="2"> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="Y" GridPane.columnIndex="2" GridPane.rowIndex="2">
<GridPane.margin> <font>
<Insets left="34.0"/> <Font size="23.0" />
</GridPane.margin> </font>
</Circle> <GridPane.margin>
<Circle fx:id="circA" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <Insets bottom="5.0" left="41.0" />
GridPane.columnIndex="2" GridPane.rowIndex="1"/> </GridPane.margin>
<Circle fx:id="circS" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </Label>
GridPane.columnIndex="3" GridPane.rowIndex="1"/> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="P" GridPane.columnIndex="1" GridPane.rowIndex="2">
<Circle fx:id="circX" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <font>
GridPane.columnIndex="3" GridPane.rowIndex="2"> <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="circW" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </Label>
GridPane.columnIndex="2"> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="K" GridPane.columnIndex="9" GridPane.rowIndex="1">
<GridPane.margin> <font>
<Insets left="34.0"/> <Font size="23.0" />
</GridPane.margin> </font>
</Circle> <GridPane.margin>
<Circle fx:id="circE" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <Insets bottom="2.0" left="7.0" />
GridPane.columnIndex="3"> </GridPane.margin>
<GridPane.margin> </Label>
<Insets left="34.0"/> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="J" GridPane.columnIndex="8" GridPane.rowIndex="1">
</GridPane.margin> <font>
</Circle> <Font size="23.0" />
<Circle fx:id="circD" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </font>
GridPane.columnIndex="4" GridPane.rowIndex="1"/> <GridPane.margin>
<Circle fx:id="circC" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <Insets bottom="2.0" left="7.0" />
GridPane.columnIndex="4" GridPane.rowIndex="2"> </GridPane.margin>
<GridPane.margin> </Label>
<Insets left="34.0"/> <Label alignment="CENTER" minHeight="0.0" prefHeight="27.0" prefWidth="25.0" text="H" GridPane.columnIndex="7" GridPane.rowIndex="1">
</GridPane.margin> <font>
</Circle> <Font size="23.0" />
<Circle fx:id="circV" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </font>
GridPane.columnIndex="5" GridPane.rowIndex="2"> <GridPane.margin>
<GridPane.margin> <Insets bottom="4.0" left="9.0" />
<Insets left="34.0"/> </GridPane.margin>
</GridPane.margin> </Label>
</Circle> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="G" GridPane.columnIndex="6" GridPane.rowIndex="1">
<Circle fx:id="circB" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <font>
GridPane.columnIndex="6" GridPane.rowIndex="2"> <Font size="23.0" />
<GridPane.margin> </font>
<Insets left="34.0"/> <GridPane.margin>
</GridPane.margin> <Insets bottom="2.0" left="7.0" />
</Circle> </GridPane.margin>
<Circle fx:id="circN" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </Label>
GridPane.columnIndex="7" GridPane.rowIndex="2"> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="F" GridPane.columnIndex="5" GridPane.rowIndex="1">
<GridPane.margin> <font>
<Insets left="34.0"/> <Font size="23.0" />
</GridPane.margin> </font>
</Circle> <GridPane.margin>
<Circle fx:id="circM" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <Insets bottom="2.0" left="7.0" />
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="D" GridPane.columnIndex="4" GridPane.rowIndex="1">
</GridPane.margin> <font>
</Circle> <Font size="23.0" />
<Circle fx:id="circL" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </font>
GridPane.columnIndex="9" GridPane.rowIndex="2"> <GridPane.margin>
<GridPane.margin> <Insets bottom="2.0" left="7.0" />
<Insets left="34.0"/> </GridPane.margin>
</GridPane.margin> </Label>
</Circle> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="S" GridPane.columnIndex="3" GridPane.rowIndex="1">
<Circle fx:id="circF" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <font>
GridPane.columnIndex="5" GridPane.rowIndex="1"/> <Font size="23.0" />
<Circle fx:id="circG" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </font>
GridPane.columnIndex="6" GridPane.rowIndex="1"/> <GridPane.margin>
<Circle fx:id="circH" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <Insets bottom="2.0" left="7.0" />
GridPane.columnIndex="7" GridPane.rowIndex="1"/> </GridPane.margin>
<Circle fx:id="circJ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </Label>
GridPane.columnIndex="8" GridPane.rowIndex="1"/> <Label alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="A" GridPane.columnIndex="2" GridPane.rowIndex="1">
<Circle fx:id="circK" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <font>
GridPane.columnIndex="9" GridPane.rowIndex="1"/> <Font size="23.0" />
<Circle fx:id="circR" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </font>
GridPane.columnIndex="4"> <GridPane.margin>
<GridPane.margin> <Insets bottom="2.0" left="7.0" />
<Insets left="34.0"/> </GridPane.margin>
</GridPane.margin> </Label>
</Circle> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="O" textAlignment="CENTER" GridPane.columnIndex="9">
<Circle fx:id="circT" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <font>
GridPane.columnIndex="5"> <Font size="23.0" />
<GridPane.margin> </font>
<Insets left="34.0"/> <GridPane.margin>
</GridPane.margin> <Insets left="42.0" />
</Circle> </GridPane.margin>
<Circle fx:id="circZ" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </Label>
GridPane.columnIndex="6"> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="I" textAlignment="CENTER" GridPane.columnIndex="8">
<GridPane.margin> <font>
<Insets left="34.0"/> <Font size="23.0" />
</GridPane.margin> </font>
</Circle> <GridPane.margin>
<Circle fx:id="circU" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <Insets left="42.0" />
GridPane.columnIndex="7"> </GridPane.margin>
<GridPane.margin> </Label>
<Insets left="34.0"/> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="U" textAlignment="CENTER" GridPane.columnIndex="7">
</GridPane.margin> <font>
</Circle> <Font size="23.0" />
<Circle fx:id="circI" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" </font>
GridPane.columnIndex="8"> <GridPane.margin>
<GridPane.margin> <Insets left="42.0" />
<Insets left="34.0"/> </GridPane.margin>
</GridPane.margin> </Label>
</Circle> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="Z" textAlignment="CENTER" GridPane.columnIndex="6">
<Circle fx:id="circO" fill="#f0f3f5" radius="22.0" stroke="BLACK" strokeType="INSIDE" <font>
GridPane.columnIndex="9"> <Font size="23.0" />
<GridPane.margin> </font>
<Insets left="34.0"/> <GridPane.margin>
</GridPane.margin> <Insets left="42.0" />
</Circle> </GridPane.margin>
<Label fx:id="lblL" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="L" </Label>
GridPane.columnIndex="9" GridPane.rowIndex="2"> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="T" textAlignment="CENTER" GridPane.columnIndex="5">
<font> <font>
<Font size="23.0"/> <Font size="23.0" />
</font> </font>
<GridPane.margin> <GridPane.margin>
<Insets bottom="5.0" left="42.0"/> <Insets left="42.0" />
</GridPane.margin> </GridPane.margin>
</Label> </Label>
<Label fx:id="lblM" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="M" <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="R" textAlignment="CENTER" GridPane.columnIndex="4">
GridPane.columnIndex="8" GridPane.rowIndex="2"> <font>
<font> <Font size="23.0" />
<Font size="23.0"/> </font>
</font> <GridPane.margin>
<GridPane.margin> <Insets left="42.0" />
<Insets bottom="5.0" left="42.0"/> </GridPane.margin>
</GridPane.margin> </Label>
</Label> <Label alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="E" textAlignment="CENTER" GridPane.columnIndex="3">
<Label fx:id="lblN" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="N" <font>
GridPane.columnIndex="7" GridPane.rowIndex="2"> <Font size="23.0" />
<font> </font>
<Font size="23.0"/> <GridPane.margin>
</font> <Insets left="42.0" />
<GridPane.margin> </GridPane.margin>
<Insets bottom="5.0" left="42.0"/> </Label>
</GridPane.margin> <Label alignment="CENTER" prefHeight="36.0" prefWidth="30.0" text="W" GridPane.columnIndex="2">
</Label> <font>
<Label fx:id="lblB" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="B" <Font size="23.0" />
GridPane.columnIndex="6" GridPane.rowIndex="2"> </font>
<font> <GridPane.margin>
<Font size="23.0"/> <Insets left="42.0" />
</font> </GridPane.margin>
<GridPane.margin> </Label>
<Insets bottom="5.0" 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="lblV" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="V" </font>
GridPane.columnIndex="5" GridPane.rowIndex="2"> <GridPane.margin>
<font> <Insets left="42.0" />
<Font size="23.0"/> </GridPane.margin>
</font> </Label>
<GridPane.margin> </GridPane>
<Insets bottom="5.0" left="42.0"/> <GridPane layoutX="297.0" layoutY="64.0" prefHeight="168.0" prefWidth="585.0">
</GridPane.margin> <columnConstraints>
</Label> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<Label fx:id="lblC" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="C" <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
GridPane.columnIndex="4" GridPane.rowIndex="2"> </columnConstraints>
<font> <rowConstraints>
<Font size="23.0"/> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</font> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<GridPane.margin> </rowConstraints>
<Insets bottom="5.0" left="42.0"/> <Button fx:id="btnSenden" alignment="CENTER" contentDisplay="RIGHT" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="70.0" prefWidth="195.0" text="An Funker senden" textAlignment="CENTER" GridPane.columnIndex="1">
</GridPane.margin> <GridPane.margin>
</Label> <Insets left="80.0" />
<Label fx:id="lblX" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="X" </GridPane.margin>
GridPane.columnIndex="3" GridPane.rowIndex="2"> </Button>
<font> <Button fx:id="btnEmpfangen" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="70.0" prefWidth="195.0" text="Funkspruch empfangen" GridPane.columnIndex="1" GridPane.rowIndex="1">
<Font size="23.0"/> <GridPane.margin>
</font> <Insets left="80.0" />
<GridPane.margin> </GridPane.margin>
<Insets bottom="5.0" left="42.0"/> </Button>
</GridPane.margin> <TextArea fx:id="tfKlartext" prefHeight="66.0" prefWidth="293.0" wrapText="true">
</Label> <GridPane.margin>
<Label fx:id="lblY" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="Y" <Insets bottom="5.0" top="5.0" />
GridPane.columnIndex="2" GridPane.rowIndex="2"> </GridPane.margin>
<font> </TextArea>
<Font size="23.0"/> <TextArea fx:id="tfCodiert" prefHeight="200.0" prefWidth="200.0" wrapText="true" GridPane.rowIndex="1">
</font> <GridPane.margin>
<GridPane.margin> <Insets bottom="5.0" top="5.0" />
<Insets bottom="5.0" left="41.0"/> </GridPane.margin>
</GridPane.margin> </TextArea>
</Label> </GridPane>
<Label fx:id="lblP" alignment="CENTER" minHeight="0.0" prefHeight="30.0" prefWidth="30.0" text="P" <Label fx:id="lblKenngruppe" layoutX="682.0" layoutY="34.0" prefHeight="17.0" prefWidth="177.0" />
GridPane.columnIndex="1" GridPane.rowIndex="2"> <Pane layoutX="266.0" layoutY="194.0" prefHeight="200.0" prefWidth="354.0" style="-fx-background-color: white; -fx-border-color: black;" visible="false">
<font> <ProgressIndicator layoutX="127.0" layoutY="70.0" prefHeight="99.0" prefWidth="101.0" />
<Font size="23.0"/> <Label layoutX="79.0" layoutY="27.0" text="Kommunikation mit Funkraum...">
</font> <font>
<GridPane.margin> <Font size="14.0" />
<Insets bottom="5.0" left="42.0"/> </font>
</GridPane.margin> </Label>
</Label> </Pane>
<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>
<GridPane.margin>
<Insets bottom="2.0" left="7.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="1">
<font>
<Font size="23.0"/>
</font>
<GridPane.margin>
<Insets bottom="2.0" left="7.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="1">
<font>
<Font size="23.0"/>
</font>
<GridPane.margin>
<Insets bottom="4.0" left="9.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="1">
<font>
<Font size="23.0"/>
</font>
<GridPane.margin>
<Insets bottom="2.0" left="7.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="1">
<font>
<Font size="23.0"/>
</font>
<GridPane.margin>
<Insets bottom="2.0" left="7.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="1">
<font>
<Font size="23.0"/>
</font>
<GridPane.margin>
<Insets bottom="2.0" left="7.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="1">
<font>
<Font size="23.0"/>
</font>
<GridPane.margin>
<Insets bottom="2.0" left="7.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="1">
<font>
<Font size="23.0"/>
</font>
<GridPane.margin>
<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="9">
<font>
<Font size="23.0"/>
</font>
<GridPane.margin>
<Insets left="42.0"/>
</GridPane.margin>
</Label>
<Label fx:id="lblI" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="I"
textAlignment="CENTER" GridPane.columnIndex="8">
<font>
<Font size="23.0"/>
</font>
<GridPane.margin>
<Insets left="42.0"/>
</GridPane.margin>
</Label>
<Label fx:id="lblU" alignment="CENTER" prefHeight="30.0" prefWidth="30.0" text="U"
textAlignment="CENTER" GridPane.columnIndex="7">
<font>
<Font size="23.0"/>
</font>
<GridPane.margin>
<Insets left="42.0"/>
</GridPane.margin>
</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>
<Pane fx:id="portPane0" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0"
style="-fx-background-color: lightgrey;"/>
</children>
</Pane>
<Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="7">
<children>
<Pane fx:id="portPane1" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0"
style="-fx-background-color: lightgrey;"/>
</children>
</Pane>
<Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3" GridPane.rowIndex="7">
<children>
<Pane fx:id="portPane2" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0"
style="-fx-background-color: lightgrey;"/>
</children>
</Pane>
<Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="4" GridPane.rowIndex="7">
<children>
<Pane fx:id="portPane3" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0"
style="-fx-background-color: lightgrey;"/>
</children>
</Pane>
<Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="5" GridPane.rowIndex="7">
<children>
<Pane fx:id="portPane4" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0"
style="-fx-background-color: lightgrey;"/>
</children>
</Pane>
<Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="6" GridPane.rowIndex="7">
<children>
<Pane fx:id="portPane5" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0"
style="-fx-background-color: lightgrey;"/>
</children>
</Pane>
<Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="7" GridPane.rowIndex="7">
<children>
<Pane fx:id="portPane6" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0"
style="-fx-background-color: lightgrey;"/>
</children>
</Pane>
<Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="8" GridPane.rowIndex="7">
<children>
<Pane fx:id="portPane7" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0"
style="-fx-background-color: lightgrey;"/>
</children>
</Pane>
<Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="9" GridPane.rowIndex="7">
<children>
<Pane fx:id="portPane8" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0"
style="-fx-background-color: lightgrey;"/>
</children>
</Pane>
<Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="10" GridPane.rowIndex="7">
<children>
<Pane fx:id="portPane9" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0"
style="-fx-background-color: lightgrey;"/>
</children>
</Pane>
</children>
</GridPane>
<GridPane layoutX="297.0" layoutY="64.0" prefHeight="168.0" prefWidth="585.0">
<columnConstraints>
<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>
<children>
<TextField fx:id="tfKlartext" editable="false" prefHeight="70.0" prefWidth="293.0">
<GridPane.margin>
<Insets/>
</GridPane.margin>
</TextField>
<TextField fx:id="tfCodiert" editable="false" prefHeight="70.0" prefWidth="293.0"
GridPane.rowIndex="1"/>
<Button fx:id="btnSenden" alignment="CENTER" contentDisplay="RIGHT" mnemonicParsing="false"
onAction="#gedrueckteTaste" prefHeight="70.0" prefWidth="195.0" text="An Funker senden"
textAlignment="CENTER" GridPane.columnIndex="1">
<GridPane.margin>
<Insets left="80.0"/>
</GridPane.margin>
</Button>
<Button fx:id="btnEmpfangen" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="70.0"
prefWidth="195.0" text="Funkspruch empfangen" GridPane.columnIndex="1" GridPane.rowIndex="1">
<GridPane.margin>
<Insets left="80.0"/>
</GridPane.margin>
</Button>
</children>
</GridPane>
<Label fx:id="lblKenngruppe" layoutX="682.0" layoutY="34.0" prefHeight="17.0" prefWidth="177.0"
style="-fx-border-color: #000000;"/>
<Pane fx:id="paneProgress" layoutX="266.0" layoutY="194.0" prefHeight="200.0" prefWidth="354.0"
style="-fx-background-color: white; -fx-border-color: black;" visible="false">
<children>
<ProgressIndicator fx:id="piProgress" layoutX="127.0" layoutY="70.0" prefHeight="99.0"
prefWidth="101.0"/>
<Label fx:id="lblProgressText" layoutX="79.0" layoutY="27.0" text="Kommunikation mit Funkraum...">
<font>
<Font size="14.0"/>
</font>
</Label>
</children>
</Pane>
</children>
</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>
...@@ -29,25 +29,25 @@ public class HardwareTest { ...@@ -29,25 +29,25 @@ public class HardwareTest {
h.setWalzen(1, 5, 25); h.setWalzen(1, 5, 25);
h.setWalzen(2, 1, 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.setWalzen(0, 2, 25); h.setWalzen(0, 2, 25);
h.setWalzen(1, 5, 25); h.setWalzen(1, 5, 25);
h.setWalzen(2, 1, 25); h.setWalzen(2, 1, 25);
result = h.codiere('P'); result = h.codiere('N');
Assert.assertEquals("Decodiere: P Erwartet A, erhalten " + result, 'A', result); Assert.assertEquals("Decodiere: N Erwartet A, erhalten " + result, 'A', result);
result = h.codiere('R'); result = h.codiere('K');
Assert.assertEquals("Decodiere: R Erwartet B, erhalten " + result, 'B', result); Assert.assertEquals("Decodiere: K Erwartet B, erhalten " + result, 'B', result);
result = h.codiere('E'); result = h.codiere('V');
Assert.assertEquals("Decodiere: E Erwartet I, erhalten " + result, 'I', result); Assert.assertEquals("Decodiere: V Erwartet I, erhalten " + result, 'I', result);
result = h.codiere('A'); result = h.codiere('T');
Assert.assertEquals("Decodiere: A Erwartet F, erhalten " + result, 'F', result); Assert.assertEquals("Decodiere: T Erwartet F, erhalten " + result, 'F', result);
h.setWalzen(0, 2, 25); h.setWalzen(0, 2, 25);
h.setWalzen(1, 5, 25); h.setWalzen(1, 5, 25);
...@@ -63,13 +63,13 @@ public class HardwareTest { ...@@ -63,13 +63,13 @@ 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(0, 2, 25);
h.setWalzen(1, 5, 25); h.setWalzen(1, 5, 25);
h.setWalzen(2, 1, 25); h.setWalzen(2, 1, 25);
result = h.codiere('D'); result = h.codiere('C');
Assert.assertEquals("Codiere: D Erwartet I, erhalten " + result, 'I', result); Assert.assertEquals("Codiere: C Erwartet I, erhalten " + result, 'I', result);
h.setWalzen(0, 2, 25); h.setWalzen(0, 2, 25);
h.setWalzen(1, 5, 25); h.setWalzen(1, 5, 25);
...@@ -77,6 +77,6 @@ public class HardwareTest { ...@@ -77,6 +77,6 @@ public class HardwareTest {
h.getSteckbrett().setzeVertauschung('A', 'B'); h.getSteckbrett().setzeVertauschung('A', 'B');
h.getSteckbrett().setzeVertauschung('C', 'D'); h.getSteckbrett().setzeVertauschung('C', 'D');
result = h.codiere('A'); result = h.codiere('A');
Assert.assertEquals("Codiere: A Erwartet A, erhalten " + result, 'O', result); Assert.assertEquals("Codiere: A Erwartet M, erhalten " + result, 'M', result);
} }
} }
\ No newline at end of file