diff --git a/bin/application/DBController$1.class b/bin/application/DBController$1.class
new file mode 100644
index 0000000..5316a92
Binary files /dev/null and b/bin/application/DBController$1.class differ
diff --git a/bin/application/DBController.class b/bin/application/DBController.class
new file mode 100644
index 0000000..3522241
Binary files /dev/null and b/bin/application/DBController.class differ
diff --git a/bin/application/Main.class b/bin/application/Main.class
new file mode 100644
index 0000000..216aaa8
Binary files /dev/null and b/bin/application/Main.class differ
diff --git a/bin/application/MainWindow.fxml b/bin/application/MainWindow.fxml
new file mode 100644
index 0000000..ce5e5a4
--- /dev/null
+++ b/bin/application/MainWindow.fxml
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bin/application/MainWindowController$1.class b/bin/application/MainWindowController$1.class
new file mode 100644
index 0000000..1670e73
Binary files /dev/null and b/bin/application/MainWindowController$1.class differ
diff --git a/bin/application/MainWindowController.class b/bin/application/MainWindowController.class
new file mode 100644
index 0000000..c1f5b3d
Binary files /dev/null and b/bin/application/MainWindowController.class differ
diff --git a/bin/application/application.css b/bin/application/application.css
new file mode 100644
index 0000000..83d6f33
--- /dev/null
+++ b/bin/application/application.css
@@ -0,0 +1 @@
+/* JavaFX CSS - Leave this comment until you have at least create one rule which uses -fx-Property */
\ No newline at end of file
diff --git a/bin/application/tableData.class b/bin/application/tableData.class
new file mode 100644
index 0000000..1a67dd6
Binary files /dev/null and b/bin/application/tableData.class differ
diff --git a/bin/resources/icons/addEntry.png b/bin/resources/icons/addEntry.png
new file mode 100644
index 0000000..6317302
Binary files /dev/null and b/bin/resources/icons/addEntry.png differ
diff --git a/build.fxbuild b/build.fxbuild
new file mode 100644
index 0000000..a5cde35
--- /dev/null
+++ b/build.fxbuild
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/application/DBController.java b/src/application/DBController.java
new file mode 100644
index 0000000..82558ec
--- /dev/null
+++ b/src/application/DBController.java
@@ -0,0 +1,304 @@
+package application;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.io.File;
+import java.io.FileInputStream;
+
+class DBController {
+
+ private Connection connection;
+
+ private String DB_PATH_Win = "C:/ProgramData/PWMaster/datenbank.db";
+ private String DB_PATH_Linux = System.getProperty("user.home") + "/bin/PWMaster/datenbank.db";
+
+ private Main main;
+ //private Cryption crypo = new Cryption();
+ private String schluessel; //Für Ver-/Entschlüsselung
+
+ public void main() {
+ try {
+ if(System.getProperty("os.name").equals("Linux")) {
+ connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Linux);
+ } else {
+ connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Win);
+ }
+ } catch (SQLException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ DBController(Main main){
+ this.main = main;
+ }
+ public void verbindeDatenbank() { //Verbinde mit der Datenbank-Datei
+ try {
+ if (connection != null)
+ return;
+ if(System.getProperty("os.name").equals("Linux")) {
+ connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Linux);
+ } else {
+ connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Win);
+ }
+ if (!connection.isClosed())
+ System.out.println();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ Runtime.getRuntime().addShutdownHook(new Thread() {
+ public void run() {
+ try {
+ if (!connection.isClosed() && connection != null) {
+ connection.close();
+ if (connection.isClosed())
+ System.out.println();
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+ public void fuellenDatenbank(int pID, String pDatum, String pKonto, String pNutzername, String pEmail, String pPasswort) { //Neuen Eintrag erstellen
+ try {
+ PreparedStatement ps = connection.prepareStatement("INSERT INTO konten VALUES (?, ?, ?, ?, ?, ?);");
+ ps.setInt(1, pID); //Primärschlässel
+ ps.setString(2, pDatum);
+ ps.setString(3, pKonto);
+ ps.setString(4, pNutzername);
+ ps.setString(5, pEmail);
+ ps.setString(6, pPasswort);
+
+ ps.addBatch();
+ connection.setAutoCommit(false);
+ ps.executeBatch(); //SQL ausführen
+ connection.setAutoCommit(true);
+ //connection.close();
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ }
+ }
+ public void erstelleDatenbank(){ //Erstelle Tabelle mit Reihen
+ try {
+ Statement stmt = connection.createStatement();
+ stmt.executeUpdate("DROP TABLE IF EXISTS konten;");
+ stmt.executeUpdate("CREATE TABLE konten (id, datum, konto, nutzername, email, passwort);");
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ }
+ }
+ public boolean existiertDatenbank(String pPfad){ //Prüft ob die Datenbank existiert
+ File varTmpDir = new File(pPfad);
+ if(!varTmpDir.exists()){
+ return false;
+ }else{
+ return true;
+ }
+ }
+ private void ausgebenSyso(){ //Debugging Ausgabe der kompletten Datenbank
+ try {
+ Statement stmt = connection.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT * FROM konten;");
+ while (rs.next()) {
+ System.out.println("Datum = " + rs.getString("datum"));
+ System.out.println("Konto = " + rs.getString("konto"));
+ System.out.println("Nutzername = " + rs.getString("nutzername"));
+ System.out.println("E-Mail = " + rs.getString("email"));
+ System.out.println("Passwort = " + rs.getString("passwort"));
+ System.out.println(" ");
+ }
+
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ }
+ }
+ public String getDatum(int pID){ //Gibt das Datum zurück
+ try {
+ Statement stmt = connection.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT id, datum FROM konten WHERE id = "+pID+";" );
+ return rs.getString("datum");
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ return "Error 404";
+ }
+ }
+ public String getKonto(int pID){ //Gibt das Konto zurück
+ try {
+ Statement stmt = connection.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT id, konto FROM konten WHERE id = "+pID+";" );
+ return rs.getString("konto");
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ return "Error 404";
+ }
+ }
+ public String getNutzername(int pID){ //Gibt den Nutzernamen zurück
+ try {
+ Statement stmt = connection.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT id, nutzername FROM konten WHERE id = "+pID+";" );
+ return rs.getString("nutzername");
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ return "Error 404";
+ }
+ }
+ public String getEmail(int pID){ //Gibt die Email zurück
+ try {
+ Statement stmt = connection.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT id, email FROM konten WHERE id = "+pID+";" );
+ return rs.getString("email");
+
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ return "Error 404";
+ }
+ }
+ public String getPasswort(int pID){ //Gibt das Passwort zurück
+ try {
+ Statement stmt = connection.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT id, passwort FROM konten WHERE id = "+pID+";" );
+ return rs.getString("passwort");
+
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ return "Error 404";
+ }
+
+ }
+
+ public void setDatum(int pID, String pDatum){ //Setzt das Datum
+ try {
+ Statement stmt = connection.createStatement();
+ stmt.executeUpdate("UPDATE konten SET datum = '"+pDatum+"'WHERE id ="+pID+";");
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ }
+ }
+
+ public void setKonto(int pID, String pKonto){ //Setzt das Konto
+ try {
+ Statement stmt = connection.createStatement();
+ stmt.executeUpdate("UPDATE konten SET konto = '"+pKonto+"'WHERE id ="+pID+";");
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ }
+ }
+
+ public void setNutername(int pID, String pNutername){ //Setzt den Nutzername
+ try {
+ Statement stmt = connection.createStatement();
+ stmt.executeUpdate("UPDATE konten SET nutzername = '"+pNutername+"'WHERE id ="+pID+";");
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ }
+ }
+
+ public void setEmail(int pID, String pEmail){ //Setzt die Email
+ try {
+ Statement stmt = connection.createStatement();
+ stmt.executeUpdate("UPDATE konten SET email = '"+pEmail+"'WHERE id ="+pID+";");
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ }
+ }
+
+ public void setPasswort(int pID, String pPasswort){ //Setzt das Passwort
+ try {
+ Statement stmt = connection.createStatement();
+ stmt.executeUpdate("UPDATE konten SET passwort = '"+pPasswort+"'WHERE id ="+pID+";");
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ }
+ }
+
+ public void loeschenEintrag(int pID){ //Löscht den Eintrag
+ int alteOrdnung = getNeueID(); //Speichert die ID des letzten Eintrags
+ try {
+ if(pID == getNeueID() -1){ //Falls letzter Eintrag gelöscht werden soll
+ PreparedStatement ps = connection.prepareStatement("DELETE FROM konten WHERE id=?");
+ ps.setInt(1, pID);
+ ps.executeUpdate();
+ }else{ // Wenn ein Eintrag in mitten der DB gelöscht wird, dann wird hochkopiert
+ while(!(pID+1 == alteOrdnung -1)){
+ int pIDneu = pID + 1;
+ Statement stmt = connection.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT id, datum, konto, nutzername, email, passwort FROM konten WHERE id = "+pIDneu+";" );
+
+ String pDatum = rs.getString("datum");
+ String pKonto = rs.getString("konto");
+ String pNutzername = rs.getString("nutzername");
+ String pEmail = rs.getString("email");
+ String pPasswort = rs.getString("passwort");
+
+ stmt.executeUpdate("UPDATE konten SET datum = '"+pDatum+"', konto = '"+pKonto+"', nutzername = '"+pNutzername+"', email = '"+pEmail+"', passwort = '"+pPasswort+"'WHERE id ="+pID+";");
+ pID = pID + 1;
+ }
+ PreparedStatement ps = connection.prepareStatement("DELETE FROM konten WHERE id=?");
+ ps.setInt(1, alteOrdnung -1);
+ ps.executeUpdate();
+ }
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ }
+ }
+
+ public int getNeueID(){ //Gibt die ID des nächsten Eintrags zurück
+ int neueID = 0;
+ try {
+ Statement stmt = connection.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT * FROM konten;");
+ while (rs.next()) {
+ neueID = rs.getInt("id") + 1;
+ }
+ rs.close();
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ }
+ return neueID;
+ }
+
+ public ArrayList ladeTabelle(){ //Gibt ein Objekt daten mit allen Einträgen der DB zurück
+ ArrayList daten = new ArrayList<>();
+ try {
+ Statement stmt = connection.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT * FROM konten;");
+ while (rs.next()) {
+ try {
+ // Entschlüsselte Daten werden als Datenobjekt gespeichert
+ //daten.add(new tableData(rs.getInt("id"), crypo.entschluesseln(rs.getString("datum"), schluessel), crypo.entschluesseln(rs.getString("konto"),schluessel)));
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ } catch (SQLException e) {
+ System.err.println("Couldn't handle DB-Query");
+ e.printStackTrace();
+ }
+ return daten;
+ }
+
+ public void setSchluessel(String pSchluessel){ //Setzt den Schlüssel für die Ver-/Entschlüsslung
+ schluessel = pSchluessel;
+ }
+
+}
diff --git a/src/application/Main.java b/src/application/Main.java
new file mode 100644
index 0000000..1524a9e
--- /dev/null
+++ b/src/application/Main.java
@@ -0,0 +1,95 @@
+package application;
+import java.io.File;
+import java.io.FileInputStream;
+import java.security.GeneralSecurityException;
+import java.security.SecureRandom;
+import java.util.Optional;
+import java.util.Random;
+import com.j256.twofactorauth.TimeBasedOneTimePasswordUtil;
+import javafx.application.Application;
+import javafx.application.Platform;
+import javafx.fxml.FXMLLoader;
+import javafx.geometry.Insets;
+import javafx.stage.Stage;
+import javafx.util.Pair;
+import javafx.scene.Node;
+import javafx.scene.Scene;
+import javafx.scene.control.Alert;
+import javafx.scene.control.Alert.AlertType;
+import javafx.scene.control.ButtonBar.ButtonData;
+import javafx.scene.control.ButtonType;
+import javafx.scene.control.Dialog;
+import javafx.scene.control.Label;
+import javafx.scene.control.PasswordField;
+import javafx.scene.control.TextField;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.layout.AnchorPane;
+import javafx.scene.layout.GridPane;
+
+public class Main extends Application {
+ private MainWindowController mwc;
+ private DBController dbc = new DBController(this);
+ private String schluesselNutzer; //Passwort des Nutzers
+
+ private Stage primaryStage;
+ @Override
+ public void start(Stage primaryStage) {
+ this.primaryStage = primaryStage;
+ mainWindow();
+ }
+ private void mainWindow(){
+ try {
+ FXMLLoader loader = new FXMLLoader(getClass().getResource("MainWindow.fxml"));
+ AnchorPane pane = loader.load();
+
+ //primaryStage.setWidth(1536);
+ //primaryStage.setHeight(864);
+ primaryStage.setTitle("jFxKasse"); //Title der Stage
+
+ mwc = loader.getController();
+ mwc.setMain(this, dbc);
+
+ firstStart(); //Prüft ob das Programm zuvor gestartet wurde
+
+ dbc.main(); //Startet die Datenbank
+ mwc.initUI(); //Startet die UI
+ mwc.fuelleTablle(); //Ladt die Einträge in die Tabelle
+
+ Scene scene = new Scene(pane);
+ scene.getStylesheets().add(Main.class.getResource("application.css").toExternalForm());
+ primaryStage.setScene(scene);
+ primaryStage.show(); //zeigt die Stage an
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ private void firstStart() throws Exception{
+ if(mwc.loadSettings()){ //Wenn XML gefunden
+ dbc.verbindeDatenbank(); //Verbindet mit der Datenbank-Datei
+
+
+ }else{ //Wenn keine XML gefunden --> erster Start
+ System.out.println("keine XML gefunden!");
+ if(System.getProperty("os.name").equals("Linux")) {
+
+ File dir = new File(System.getProperty("user.home") + "/bin/PWMaster"); //Erstellt den Unterordner
+ dir.mkdir(); //Erstellt den Unterordner
+ } else {
+ File dir = new File("C:/ProgramData/PWMaster/"); //Erstellt den Unterordner
+ dir.mkdir(); //Erstellt den Unterordner
+ }
+
+ mwc.saveSettings(schluesselNutzer, "dd"); // speichert das Passwort und den Individueller Schlüssel für die API in der XML
+ dbc.verbindeDatenbank(); //Verbindet mit der Datenbank-Datei
+ dbc.erstelleDatenbank(); // Neue Datenbank-Datei wird erstellt
+ System.exit(0); //Programm wird beendet
+ }
+ }
+
+
+}
diff --git a/src/application/MainWindow.fxml b/src/application/MainWindow.fxml
new file mode 100644
index 0000000..ce5e5a4
--- /dev/null
+++ b/src/application/MainWindow.fxml
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/application/MainWindowController.java b/src/application/MainWindowController.java
new file mode 100644
index 0000000..f03d0d8
--- /dev/null
+++ b/src/application/MainWindowController.java
@@ -0,0 +1,201 @@
+package application;
+
+import javafx.fxml.FXML;
+import javafx.geometry.Insets;
+import javafx.scene.Node;
+import javafx.scene.control.Alert;
+import javafx.scene.control.Alert.AlertType;
+import javafx.scene.control.Button;
+import javafx.scene.control.ButtonBar.ButtonData;
+import javafx.scene.control.ButtonType;
+import javafx.scene.control.Dialog;
+import javafx.scene.control.TreeTableColumn;
+import javafx.scene.control.TreeTableView;
+import javafx.scene.control.TextField;
+import javafx.scene.control.TreeItem;
+import java.awt.Desktop;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.StringSelection;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.sql.DriverManager;
+import java.util.Optional;
+import java.util.Properties;
+import javafx.application.Platform;
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
+import javafx.event.ActionEvent;
+import javafx.scene.control.Label;
+import javafx.scene.control.PasswordField;
+import javafx.scene.layout.AnchorPane;
+import javafx.scene.layout.GridPane;
+import javafx.util.Pair;
+
+public class MainWindowController {
+ private static final String String = null;
+ Toolkit toolkit = Toolkit.getDefaultToolkit();
+ Clipboard clipboard = toolkit.getSystemClipboard();
+ @FXML
+ private AnchorPane mainAnchorpane;
+ @FXML
+ private TreeTableView mainTreeTable;
+ @FXML
+ private TreeTableColumn datumSpalte;
+ @FXML
+ private TreeTableColumn kontoSpalte;
+ @FXML
+ private TreeTableColumn idSpalte = new TreeTableColumn<>("");
+ @FXML
+ private Button ueberbtn;
+
+ private Main main;
+ private DBController dbc;
+ private String filepathXMLWin = "C:/ProgramData/PWMaster/config.xml"; //Pfad wo die XML liegt
+ private String filepathXMLLinux = System.getProperty("user.home") + "/bin/PWMaster/config.xml"; //Pfad wo die XML liegt
+ private boolean showPasswort = false;
+ private String schluessel;
+ private String base32Secret;
+ private int id;
+ @FXML
+ TreeItem root = new TreeItem<>(new tableData(0, "0", "0"));
+ Properties props = new Properties();
+
+
+
+
+ @FXML
+ public void ueberbtnAction(ActionEvent event) { //Öffnet den Über-Dialog
+
+ // Erstellt einen Dialog
+ Dialog> dialog = new Dialog<>();
+ dialog.setTitle("Über PWMaster");
+ dialog.setHeaderText("Informationen und Lizenzen - Version 0.5");
+
+ // Erzeugt den Button
+ dialog.getDialogPane().getButtonTypes().addAll(ButtonType.OK);
+
+ // Erzeugt die Textfelder und Label
+ GridPane grid = new GridPane();
+ grid.setHgap(10);
+ grid.setVgap(10);
+ grid.setPadding(new Insets(20, 150, 10, 10));
+
+ grid.add(new Label("Datenbank: sqlite.org - Public Domain"
+ +"\nBASE64Decoder: java2s.com/Code/Jar/s/DownloadsunmiscBASE64Decoderjar.htm - GPLv2"
+ +"\nCrypo: blog.axxg.de/ - Copyright 2013 AxxG Alexander Grösel"
+ +" \nzwei Faktoren: github.com/j256/two-factor-auth - ISC License"
+ +" \nUI Design: eclipse.org/efxclipse/install.html - Eclipse Public License 1.0"
+ +" \nUI - Datenbank Integration: basierend auf Project-HomeFlix - github.com/Seil0/Project-HomeFlix - GPLv3 \n"
+ +" \nMaintainer: hendrik.schutter@icloud.com"
+ +" \n(c) 2017 Hendrik Schutter"), 0, 0);
+
+ dialog.getDialogPane().setContent(grid); //Setzt die GridPane auf die DialogPane
+ dialog.showAndWait();
+ }
+ @FXML
+
+ public void fuelleTablle(){ //Lädt die Datenbank in die Tabelle
+
+ dbc.setSchluessel(schluessel);
+ for(int i = 0; i < dbc.ladeTabelle().size(); i++){
+ tableData helpTableData = new tableData(dbc.ladeTabelle().get(i).getID(),
+ dbc.ladeTabelle().get(i).getDatum(), dbc.ladeTabelle().get(i).getKonto());
+ root.getChildren().add(new TreeItem(helpTableData));
+ }
+ }
+ public void initUI(){
+ mainTreeTable.setRoot(root);
+ mainTreeTable.setShowRoot(false);
+ mainTreeTable.setEditable(false);
+ //Setzt die Textfelder
+
+
+ idSpalte.setCellValueFactory(cellData -> cellData.getValue().getValue().idProperty().asObject());
+ datumSpalte.setCellValueFactory(cellData -> cellData.getValue().getValue().datumProperty());
+ kontoSpalte.setCellValueFactory(cellData -> cellData.getValue().getValue().kontoProperty());
+ mainTreeTable.getColumns().add(idSpalte);
+ mainTreeTable.getColumns().get(2).setVisible(false);
+ mainTreeTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListener