2017-06-20 80 views
0

我有一个我想从中计算成本的TableView。我的TableView中的数据来自数据库(数据库 - > ObservableList - > TableView)。JavaFX如何计算TableView中的选择行

我能计算出总成本用下面的代码:

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

然而,假设我要筛选的表,以便从具体项目名称只计算...所以我输入,例如,一个项目名称,只有那些出现。然后根据剩下的名字,我只计算这些项目的总成本......我如何才能最好地解决这个问题?

(一种选择,我发现迄今:排序列表+ FilteredList ......很抱歉,如果福利局的问题,但我只是使用JavaFX玩弄的第一次...)

+1

你找到的选项有什么问题? –

+0

它没有错 - 它的工作原理。就像我刚开始熟悉JavaFX一样,我想知道是否有其他选择? – purpleman

+0

如果你只想过滤计算,显然你可以在代码中的'for'循环里放一个'if'语句。如果你只想在表中出现匹配的项目,那么这就是'FilteredList'功能的设计目的。很明显,你可以很容易地写出自己的想法,但是既然已经写出了你为什么要重新发明轮子? –

回答

0

改变你的代码

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

上面的代码只是计算TableView中选定行的总成本。请确保通过table.getSelectionModel()。setSelectionMode(SelectionMode.MULTIPLE)将TableView设置为多选模式,在选择某些行后,运行上面的代码以计算总成本。