JavaFX aktuelle Tabellenzeile bei Choice-Box-Auswahl in Zelle ermitteln

Diskutiere aktuelle Tabellenzeile bei Choice-Box-Auswahl in Zelle ermitteln im AWT, Swing, JavaFX & SWT Bereich.
P

Padde85

Sorry, das hätte ich dazuschreiben müssen. Da waren die Finger schneller als das Hirn...

Oben ging es darum, den Typen zu definieren, der jetzt in diesem Beispiel verwendet wird.

Hier ein Screenshot, wie es aussieht plus Erläuterung:
1592993632906.png

Das Blaue ist der komplette Zeilentyp, in dem dann die ChoiceBox eingebaut wird, so wie wir sie oben im ursprünglichen Beitrag, aufgebaut haben.
In rot die Choice-Box, die nur die für den jeweiligen Dokumentenabschnitt relevanten Einträge enthält. Daher das main.getUsageTypes. Diese Methode liefert die für den Bereich (im Screenshot die Kopfzeile eines Word-Dokumentes) relevanten Verwendungsarten.

Hier der Code für die Zeilenstruktur:
Java:
/*
 * Container-Klasse für die Tabellendaten zum Template
 * Die Daten werden dann in die jeweiligen GUI-Tabellen geschrieben
 * Jede Tabellenzeile wird dabei von einem Objekt repräsentiert
 */
public class TemplateData {
    private char table;
    private int id;
    private int vtype;
    private SimpleStringProperty content;
    private SimpleStringProperty varname;
    
    public TemplateData(char table, int id, int vtype, String content, String varname) {   
    this.table = table;
    this.id = id;
    this.vtype = vtype;
    this.content = new SimpleStringProperty();
    setContent(content);
    this.varname = new SimpleStringProperty();
    setVarname(varname);
    }
    
    public char getTable() {
    return this.table;
    }
    
    public int getID() {
    return this.id;
    }
    
    // Setter nötig, da nach Datenbank-Update erzeugte GUIs in Tabellenzeilen übernommen werden müssen
    public void setID(int id) {
    this.id = id;
    }

    public int getVtype() {
    return this.vtype;
    }

    public void setVtype(int vtype) {
    this.vtype = vtype;
    }

    public String getContent() {
    return this.content.get();
    }

    public void setContent(String content) {
    this.content.set(content);
    }

    public String getVarname() {
    return this.varname.get();
    }

    public void setVarname(String varname) {
    this.varname.set(varname);
    }
}
Und hier für den UsageType:
Java:
/*
 * Container-Klasse für die Verwendungsarten in der ChoiceBox in den jeweiligen GUI-Tabellen
 */
public class VarUsageType {
    private int id;
    private char usage;
    private String description;
    
    public VarUsageType(int id, char usage, String description) {
    this.id = id;
    this.description = description;
    this.usage = usage;
    }
    
    public int getId() {
    return this.id;
    }
    
    public void setId(int id) {
    this.id = id;
    }
    
    public char getUsage() {
    return this.usage;
    }
    
    public void setUsage(char usage) {
    this.usage = usage;
    }
    
    public String getDescription() {
    return this.description;
    }
    
    public void setDescription(String description) {
    this.description = description;
    }
    
    public String toString() {
    return this.description;
    }
}
Und zu guter Letzt noch die Definition der Tabelle und der Spalten (nicht wundern, es gibt drei identische Tabellen, die unterschiedliche Daten beinhalten):
Java:
 public TableView<TemplateData> tvTplHeader;
    public TableView<TemplateData> tvTplBody;
    public TableView<TemplateData> tvTplFooter;
    public TableColumn<TemplateData, VarUsageType> tcHdType;
    public TableColumn<TemplateData, String> tcHdContent;
    public TableColumn<TemplateData, String> tcHdVar;
    public TableColumn<TemplateData, VarUsageType> tcBdType;
    public TableColumn<TemplateData, String> tcBdContent;
    public TableColumn<TemplateData, String> tcBdVar;
    public TableColumn<TemplateData, VarUsageType> tcFtType;
    public TableColumn<TemplateData, String> tcFtContent;
    public TableColumn<TemplateData, String> tcFtVar;
Falls noch was fehlen sollte, kann ich das gerne noch ergänzen :)
 
P

Padde85

In deinem Code-Beispiel habe ich nur den Datentyp VarUsageType im Zugriff. Damit weiß ich aber nicht, was denn aus der Datenbank ausgelesen wird, um diesen in der ChoiceBox vorselektieren zu können, da diese Info nur im TemplateData vorliegt. VarUsageType ist ja nur ein Container für alle möglichen Arten, die ausgewählt werden können, da diese dynamisch sind.

Auf der Datenbank steht zum Beispiel folgender Satz für den Screenshot aus obigem Beispiel:
1593002347616.png
Hierbei ist ID eine rein technische ID, über die der Datensatz auf der Datenbank persisitiert wird und hat hier keine Relevanz. TID ist die Template-ID, da ein Anwender mehrere Konfigurationen abspeichern kann. Die VID bezieht sich dann auf die ausgewählte Verwendungsart.

Und diese sind so definiert:
1593002431261.png

Daher befindet sich die Info, was wo ausgewählt wurde, nur in dem Objekt der Zeile und nicht in den Objekten, die dann in der ChoiceBox dargestellt werden sollen. Und genau der Umstand bereitet mir gerade die Probleme
 
L

lam_tr

In deinem Code-Beispiel habe ich nur den Datentyp VarUsageType im Zugriff. Damit weiß ich aber nicht, was denn aus der Datenbank ausgelesen wird, um diesen in der ChoiceBox vorselektieren zu können, da diese Info nur im TemplateData vorliegt. VarUsageType ist ja nur ein Container für alle möglichen Arten, die ausgewählt werden können, da diese dynamisch sind.

Auf der Datenbank steht zum Beispiel folgender Satz für den Screenshot aus obigem Beispiel:
Anhang anzeigen 13675
Hierbei ist ID eine rein technische ID, über die der Datensatz auf der Datenbank persisitiert wird und hat hier keine Relevanz. TID ist die Template-ID, da ein Anwender mehrere Konfigurationen abspeichern kann. Die VID bezieht sich dann auf die ausgewählte Verwendungsart.

Und diese sind so definiert:
Anhang anzeigen 13676

Daher befindet sich die Info, was wo ausgewählt wurde, nur in dem Objekt der Zeile und nicht in den Objekten, die dann in der ChoiceBox dargestellt werden sollen. Und genau der Umstand bereitet mir gerade die Probleme
Benutzt du kein OR Mapper sodass du direkt die Wert auslesen kannst? Dann ist jetzt auch klar, warum du Die Liste durchgehst du das passende Objekt holst.
 
L

lam_tr

Wie du den richtigen Wert bekommst, weiß du ja wie, die Anzeige geschieht nach dem Kommentar. An sich muss du das richtige Object holen und dort als Selection übergeben.

// Hier wird der Wert von dem DatenModel selektiert, warum hast du nur eine Id?
cb.getSelectionModel().setSelection(selection);
 
P

Padde85

Benutzt du kein OR Mapper sodass du direkt die Wert auslesen kannst? Dann ist jetzt auch klar, warum du Die Liste durchgehst du das passende Objekt holst.
Was ist ein OR Mapper? Google spuckt dafür nichts sinnvolles aus.

Wie du den richtigen Wert bekommst, weiß du ja wie, die Anzeige geschieht nach dem Kommentar. An sich muss du das richtige Object holen und dort als Selection übergeben.

// Hier wird der Wert von dem DatenModel selektiert, warum hast du nur eine Id?
cb.getSelectionModel().setSelection(selection);
Das ist ja mein Problem, dass ich keine Ahnung habe, wie ich an den richtigen Wert kommen soll. Ich habe an der Stelle nur eine ID, weil ich aktuell für jeden Bereich (Kopfzeile, Body und Fußzeile) nur einen Eintrag hinzugefügt habe.
Ich habe ja in der updateItem keine Möglichkeit, auf das Objekt der Zeile zuzugreifen, da sowohl focusedIndex als auch selectedIndex der Tabelle jeweils leer sind.
 
F

fhoffmann

Was ist ein OR Mapper? Google spuckt dafür nichts sinnvolles aus.
Vielleicht ist dein google ja kaputt - bei mir hat es jedenfalls als ersten Treffer folgendes herausgeworfen:
Es geht dabei darum, Objekte einer Anwendung ("O") in relationale Tabellen einer Datenbank ("R") zu mappen.
 
P

Padde85

Vielleicht ist dein google ja kaputt - bei mir hat es jedenfalls als ersten Treffer folgendes herausgeworfen:
Es geht dabei darum, Objekte einer Anwendung ("O") in relationale Tabellen einer Datenbank ("R") zu mappen.
Wenn man nach JAVA OR mapper sucht, findet man nichts sinnvolles, nur wenn man nach OR Mapper sucht. Ich bin davon ausgegangen, dass das eine Bezeichnung für eine Java-Funktionalität war.
ich werde mir dann mal ein paar Beispiele dazu durchlesen und schauen, ob das bei meiner Problemstellung die Lösung sein könnte. Danke für die Aufklärung :)
 
Thema: 

aktuelle Tabellenzeile bei Choice-Box-Auswahl in Zelle ermitteln

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben