• Wir präsentieren Dir heute ein Stellenangebot für einen Frontend-Entwickler Angular / Java in Braunschweig. Hier geht es zur Jobanzeige

JavaFX TableView aktualisieren

W

wolke123

Neues Mitglied
Hallo!
ich habe eine Tabelle, in die Informationen über eine Datei gespeichert wird (Name, Typ, usw.). Es funktioniert einwandfrei, dass ich die Informationen in eine DB speichere und mir die Informationen zur Darstellung in der Tabelle wieder aus der DB entnehme.

Problem:
Die Tabelle befindet sich auf einer Stage. In einer andere Stage lösche ich in einem bestimmten Fall alle Informationen zu den Dateien aus der DB und möchte nun auch, dass die Daten aus der Tabelle gelöscht werden, bzw. in der ersten Stage soll die Tabelle wieder als leer angezeigt werde.
Die Informationen werden zwar aus der DB gelöscht, aber sobald die zweite Stage schließt, zeigt die Tabelle weiterhin die alten Datei-Informationen an

Ich habe es mit synchronized vesucht, was bei einer anderen Stelle in meinem Projekt geholfen hat, hier klappt es allerdings nicht..

Stage mit Tabelle:
public class Stage1 extends Thread implements Initializable{
    @FXML
    public TableColumn tableFile;
    @FXML
    private TableColumn tableDate;
    @FXML
    private TableColumn tableType;
    @FXML
    private TableColumn tableSize;
    @FXML
    public TableView tableView;

public static boolean waitDeleteTableView = false;
   
     @Override
    public void initialize(URL url, ResourceBundle rb) {
        List<OriginalFile> filesTable = new ArrayList<>();
        try {
            filesTable = originalFileTable.getOriginalFilesForTable(); //DB abfrage
        } catch (SQLException ex) {
            Logger.getLogger(Stage1.class.getName()).log(Level.SEVERE, null, ex);
        }
        if (filesTable != null) {
            for (int i = 0; i < filesTable.size(); i++) {
                try {
                    addTableViewEntry(filesTable.get(i).getName(), filesTable.get(i).getDate(), filesTable.get(i).getType(), filesTable.get(i).getSize());
                } catch (SQLException ex) {
                    Logger.getLogger(Stage1.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
   
    public saveTableEntry(ActionEvent e) {
        TableViewItem item;
        String data;
        TableColumn col = tableFile;
        for (int i = 0; i < tableView.getItems().size(); i++) {
            item = (TableViewItem) tableView.getItems().get(i);
                data = (String) col.getCellObservableValue(item).getValue();
                if (data.equals(fileName)) {
                    TableViewItem selectedItem = (TableViewItem) tableView.getItems().get(i);
                    tableView.getItems().remove(selectedItem);
                }

                addTableViewEntry(originalFileTable.getLastEntryName(), originalFileTable.getLastEntryDate(), originalFileTable.getLastEntryType(), originalFileTable.getLastEntrySize());
                           
    }
       
    public void addTableViewEntry(String file, String date, String type, String size) throws SQLException {
        //Erstellen einer Tabellenzeile für die eingefügte Datei
        tableFile.setCellValueFactory(new PropertyValueFactory<TableViewItem, String>("file"));
        tableDate.setCellValueFactory(new PropertyValueFactory<TableViewItem, String>("date"));
        tableType.setCellValueFactory(new PropertyValueFactory<TableViewItem, String>("type"));
        tableSize.setCellValueFactory(new PropertyValueFactory<TableViewItem, String>("size"));
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
        LocalDateTime now = LocalDateTime.now();
        tableView.getItems().add(new TableViewItem(file, date, type, size));

    }
       
        public void deleteTableView() {
        Stage2 config = new Stage2();
        synchronized (config) {
            try {
                while(waitDeleteTableView) {
                    config.wait();
                }
            } catch (InterruptedException ex) {
                Logger.getLogger(Stage1.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
        System.out.println(config.deleteTableView);
        if(config.deleteTableView) { 
/* boolean bleibt auf false, obwohl es in Stage2 auf true gesetzt wird
zum testen habe ich auch schon versucht es von anfang an auf true zusetzten, aber dann bekomme ich von dem TableView eine nullpointer-exception bei dem .clear()
*/
            tableView.getItems().clear();
        }
       
    }
   
   
}

Stage 2:
public class Stage2 implements Initializable {
    public boolean deleteTableView = false;
    Stage1 stage1 = new Stage1();
   
    public void deleteTableViewEntries(){
        if(Bedingung) { //ist auf jeden fall erfüllt
            stage1.deleteTableView();
                   
                    synchronized (this) {
                        Stage1.waitDeleteTableView = true;
                        deleteTableView = true;
                        notify();
                       Stage1.waitDeleteTableView = false;
                    }
        }
    }
}



Eine weitere Möglichkeit, die ich in Betracht gezogen habe, aber nichts passendes gefunden habe:
Stage1 irgendwie reloaden oder sowas in der Art, aber eben irgendwie von der Stage2 aus.

Ich hoffe der Code-Teil reicht zum Verständnis aus und ihr könnt mir irgendwie helfen!
 
kneitzel

kneitzel

Top Contributor
Also bei sowas hilft meist:
a) eine saubere Trennung des Models von der View.
b) Nutzung des Observer Patterns

Du hast also irgend welche Daten, die in einem Model liegen. Und immer, wenn sich die Daten ändern, kann ein entsprechendes Event ausgelöst werden.
Dann kann ein Controller (oder was auch immer) sich da anmelden. Sobald die Daten dann gelöscht wurden, wird dann sozusagen Bescheid gesagt, dass die Daten sich geändert haben und der Controller kann die Daten aktualisieren.

JavaFX hat da auch schon entsprechende Klassen, die sowas bieten, aber die dienen mehr dem Binding und diese werden in der Regel nicht außerhalb der GUI verwendet. Aber das ObserverPattern kann da natürlich immer etwas bieten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Tableview Daten hinzufügen und aktualisieren AWT, Swing, JavaFX & SWT 5
N JavaFX Tableview nach Löschen von Element falscher Index AWT, Swing, JavaFX & SWT 4
T TableView Zeilen einfärben AWT, Swing, JavaFX & SWT 13
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 9
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
B JavaFX TableView-Zellen sollen automatisch so groß wie der größte Inhalt sein AWT, Swing, JavaFX & SWT 6
D JavaFX Nullpointerexception wegen TableView AWT, Swing, JavaFX & SWT 2
S Alternative JavaFX TableView AWT, Swing, JavaFX & SWT 1
L JavaFX Tableview row callback AWT, Swing, JavaFX & SWT 0
G Bekomme ResultSet mittels ObservableList nicht ins TableView AWT, Swing, JavaFX & SWT 25
S JavaFX JavaFX TableView scrollen färbt falsche Zeilen AWT, Swing, JavaFX & SWT 1
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
J JavaFx TableView mit CheckBox AWT, Swing, JavaFX & SWT 4
P JavaFX TableView Zelle markieren AWT, Swing, JavaFX & SWT 3
L JavaFX Tableview Datamodel AWT, Swing, JavaFX & SWT 2
M TableView Zeile hinzufügen AWT, Swing, JavaFX & SWT 5
Bluedaishi TableView mit Combox wert wird nicht in die TableView gesetzt AWT, Swing, JavaFX & SWT 38
J TableView Update/Refresh CPU AWT, Swing, JavaFX & SWT 2
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
J Tableview - kann man mit Enter die Zellen wechseln AWT, Swing, JavaFX & SWT 1
ralfb1105 JavaFX Dynamisch TableView Spalten erstellen AWT, Swing, JavaFX & SWT 4
M TableView + Datenbank Aktualisierung AWT, Swing, JavaFX & SWT 4
B TableView als PDF speichern AWT, Swing, JavaFX & SWT 8
B JavaFX TableView eine Zeile markieren AWT, Swing, JavaFX & SWT 5
B JavaFX JavaFX TableView PropertyValueFactory für Werte aus HashMap AWT, Swing, JavaFX & SWT 2
L JavaFX TableView Column Sortierung AWT, Swing, JavaFX & SWT 1
L Java FX Keine Anzeige Im Tableview AWT, Swing, JavaFX & SWT 4
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
L JavaFX TableView mit Aktionenbuttons AWT, Swing, JavaFX & SWT 1
C JavaFX Edit TableView in Verbindung mit SceneBuilder AWT, Swing, JavaFX & SWT 1
C JavaFX ProGuard -> TableView kein Inhalt AWT, Swing, JavaFX & SWT 7
J SceneBuilder TableView Checkbox AWT, Swing, JavaFX & SWT 1
J JavaFX Elemente werden nicht zu TableView hinzugefügt AWT, Swing, JavaFX & SWT 3
F JavaFX (Tree)TableView korrekt drucken AWT, Swing, JavaFX & SWT 1
robinab JavaFX TableView column resize nach setItems() AWT, Swing, JavaFX & SWT 0
G JavaFX TableView Wert in Spalte ändern AWT, Swing, JavaFX & SWT 0
S JavaFx - ausgewählte Rows in Arraylist (Tableview) AWT, Swing, JavaFX & SWT 4
S JavaFX - Populate TableView AWT, Swing, JavaFX & SWT 2
N JavaFX TableView aus Map AWT, Swing, JavaFX & SWT 2
J TableView Daten werden nicht ausgegeben AWT, Swing, JavaFX & SWT 9
B JavaFX TableView aus Collection befüllen AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
zhermann TableView die zweite AWT, Swing, JavaFX & SWT 7
H Java FX List<AlbumsBean> in FXML TableView AWT, Swing, JavaFX & SWT 37
E JavaFX TableView mit Zeilenumbruch in Zellen AWT, Swing, JavaFX & SWT 5
zhermann TableView wird nicht gefüllt AWT, Swing, JavaFX & SWT 14
M JavaFX JavaFX ResultSet in TableView ausgeben AWT, Swing, JavaFX & SWT 2
W JavaFX Mehrere Klassen in ein TableView AWT, Swing, JavaFX & SWT 6
MaxG. JavaFX Inhalt in Tableview wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
M JavaFX berechneten Wert in TableView schreiben AWT, Swing, JavaFX & SWT 1
K JavaFX Message in TableView AWT, Swing, JavaFX & SWT 2
H TableView mit variabler Anzahl Spalten AWT, Swing, JavaFX & SWT 2
L JavaFX List oder TableView Größe dynamisch anpassen? AWT, Swing, JavaFX & SWT 4
L JavaFX TableView mit Excelfunktion AWT, Swing, JavaFX & SWT 1
D JavaFX TableView AWT, Swing, JavaFX & SWT 2
L JavaFX TableView mit XYChart verbinden AWT, Swing, JavaFX & SWT 3
blazingblade JavaFX Tableview Clock Column update AWT, Swing, JavaFX & SWT 5
P JavaFX, TableView und Datenbank AWT, Swing, JavaFX & SWT 4
K TableView: 'Komplexes' Object AWT, Swing, JavaFX & SWT 11
L JavaFX TableView background transparent machen AWT, Swing, JavaFX & SWT 7
F TableCell aus TableView holen AWT, Swing, JavaFX & SWT 8
K JavaFX TableView mit Rectangle AWT, Swing, JavaFX & SWT 3
M Befüllung der einzelnen Zeilen des TableView AWT, Swing, JavaFX & SWT 3
J JavaFX Tableview Daten hinzufügen aus anderer Klasse AWT, Swing, JavaFX & SWT 7
N JavaFX TableView füllt nicht das gesamte ScrollPanle aus AWT, Swing, JavaFX & SWT 2
M JavaFX TableView & CSS, Rand um Tabellenkopf entfernen AWT, Swing, JavaFX & SWT 3
L JavaFX ListView oder TableView Style überschreiben? AWT, Swing, JavaFX & SWT 6
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
J JavaFX TableView - Höhe der Zeilen AWT, Swing, JavaFX & SWT 3
L JavaFX TableView mit Attributs der Modellreferenzerierung für die Spalte AWT, Swing, JavaFX & SWT 3
I JavaFX Buttons und TableView AWT, Swing, JavaFX & SWT 2
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
B Java FX TableView Zeilen mit verschiedenen Typen AWT, Swing, JavaFX & SWT 15
Z JavaFX TableView cellValueFactory für Arrays AWT, Swing, JavaFX & SWT 2
E JavaFX TableView mit Rechtsklick Zelle auswählen AWT, Swing, JavaFX & SWT 8
C (JavaFX 8) SQLite Datenbank in einem TableView darstellen AWT, Swing, JavaFX & SWT 2
H JavaFX TableView bleibt leer. AWT, Swing, JavaFX & SWT 8
M JavaFX TableView nach Spalte sortieren AWT, Swing, JavaFX & SWT 1
P JavaFX Dynamische TableView AWT, Swing, JavaFX & SWT 14
V Java FX POJO aus Datenbank in FX TableView / Best Practice AWT, Swing, JavaFX & SWT 0
P JavaFX TableView Item hinzufügen AWT, Swing, JavaFX & SWT 20
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
M JavaFX Tutorial zu Tableview AWT, Swing, JavaFX & SWT 5
C JavaFX Zugriff auf TableView AWT, Swing, JavaFX & SWT 2
M JavaFX TableView mit CheckBox als Boolean AWT, Swing, JavaFX & SWT 5
B SimpleLongProperty in TableView wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
X JavaFX TableView selektierung der cell wie begrenzen? AWT, Swing, JavaFX & SWT 0
X JavaFX TableView Error beim clicken des außenbereiches AWT, Swing, JavaFX & SWT 5
G JavaFX TableView - Änderungen werden nicht übernommen. AWT, Swing, JavaFX & SWT 3
G TableView EditingCell reagiert komisch AWT, Swing, JavaFX & SWT 4
R JavaFX TableView - nicht ausgewählte Reihe ansprechen AWT, Swing, JavaFX & SWT 6
S Java FX TableView disable Column AWT, Swing, JavaFX & SWT 4
K JavaFX Tableview mit fxml ohne Aktualiserung trotz Thread AWT, Swing, JavaFX & SWT 13
M JavaFX TableView Zeilennummerierung AWT, Swing, JavaFX & SWT 2
E JavaFX ScrollBar in TableView bei Column Resize AWT, Swing, JavaFX & SWT 2
Rudolf Nicht funktionierendes Databinding an POJOs für TableView AWT, Swing, JavaFX & SWT 2
Rudolf Referenz einer angeklickten Row einer TableView AWT, Swing, JavaFX & SWT 3
dzim TableView - keine Aktualisierung geänderter Items AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Anzeige

Neue Themen


Oben