2017-06-20 10 views
0

Ich habe ein TableView, von dem ich Kosten berechnen möchte. Daten in meinem TableView stammen aus einer Datenbank (Datenbank -> ObservableList -> TableView).JavaFX Wie berechnet man Zeilen in TableView

Ich bin in der Lage Gesamtkosten mit dem folgenden Code zu berechnen:

public static int calculateTotalCost(){ 
    total = 0; 
    for(Items i : itemTable.getItems()){ 
     total += i.getCost(); 
    } 
    return total; 
} 

Doch lassen Sie uns sagen, ich will um die Tabelle zu filtern, um nur von bestimmten Itemnamen zu berechnen ... Also ich geben, zB ein Gegenstandsname und nur diese erscheinen. Dann berechne ich basierend auf den verbleibenden Namen nur die Gesamtkosten dieser Artikel ... Wie würde ich das am besten angehen?

(Eine Option, die ich bisher gefunden: SortedList + FilteredList ... Sorry, wenn newb Frage, aber ich bin nur um mit JavaFX zum ersten Mal spielen ...)

+1

Was ist falsch an der Option, die Sie gefunden haben? –

+0

Nichts falsch daran - es funktioniert. Gerade als ich mit JavaFX vertraut werde, frage ich mich, ob es Alternativen gibt? – purpleman

+0

Wenn Sie nur die Berechnung filtern möchten, können Sie einfach eine 'if' Anweisung in die 'for'-Schleife in Ihrem Code einfügen. Wenn nur die übereinstimmenden Elemente in der Tabelle angezeigt werden sollen, wurde speziell die Funktion "FilteredList" entwickelt. Natürlich könntest du das ziemlich leicht selbst schreiben, aber da es bereits geschrieben wurde, warum erfindest du das Rad neu? –

Antwort

0

ändern Sie den Code zu

public static int calculateTotalCost(){ 
    total = 0; 
    for(Items i : table.getSelectionModel().getSelectedItems()){ 
     total += i.getCost(); 
    } 
    return total; 
} 

über den Code nur berechnen Gesamtkosten aus der ausgewählten Zeile in TableView. Stellen Sie sicher, dass TableView zuerst in den Mehrfachauswahlmodus gesetzt wird, indem Sie table.getSelectionModel(). setSelectionMode (SelectionMode.MULTIPLE) ausführen, nachdem Sie einige Zeilen ausgewählt haben, führen Sie den obigen Code aus, um die Summenkosten zu berechnen.