JavaFX 如何通过按钮从 TableView 中获取特定列的所有值和总和?

标签 java javafx

我在向我的程序添加功能时遇到问题。我正在使用 JavaFX 和 TableView 。我不知道如何实现从特定列获取数据的方法。

我尝试通过以下方式实现解决方案: JavaFX How to get all values of one column from TableView?

但我不明白我应该如何将初始化的 TableColumn 类发送到方法 totalPaidSaving

并且:How to get selected TableCell in JavaFX TableView

我还使用 getSelectionModel().getSelectedCells() 找到了几个不同的解决方案,但在这种情况下,我需要使用按钮,某种代码女巫将从特定列获取数据。

MainControl 类的片段。调用方法的地方:

addButton.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        Operation operation = new Operation();
        operation.addRecord(dateTextField, distanceTextField, lpgAmountTextField, lpgPriceTextField,
                    petrolAmountTextField, petrolPriceTextField, paidLabel, savingLabel, gasEfficiencyLabel,
                    contentTable, totalSavingsLabel);

        operation.totalPaidSaving(contentTable, totalSavingsLabel);
    }
});

我的 TableView 的配置片段也在 MainControl 类中。

@SuppressWarnings("unchecked")
public void configurateTable() {

    TableColumn<GasRecords, String> savingColumn = new TableColumn<GasRecords, String>(SAVING_COLUMN);
    savingColumn.setCellValueFactory(new PropertyValueFactory<>("saving"));

    contentTable.getColumns().addAll(dateColumn, distanceColumn, lpgAmountColumn, lpgPriceColumn, petAmountColumn,
            petPriceColumn, paidColumn, savingColumn, gasEfficiencyColumn);
}

操作类的片段:

public void totalPaidSaving(TableView<GasRecords> cT, Label tSL) {

    String totalSavingValue = "0";

    //the code that calculates the sum of the values ​​of a particular column

    tSL.setText(String.format("%.2f zł", totalSavingValue));
}

我知道使用 String 而不是 double 是不好的,但现在我想以这种形式解决它。

我的应用程序可视化链接和我想总结的列示例。 https://zapodaj.net/d8fc7ece3f629.jpg.html

我的目标是,在按下“添加”按钮后,应用程序会显示特定标签中保存列的所有保存行的总和。应用程序的其余部分正在运行。

最佳答案

通过这种方式,您可以计算列的值。您可以通过列的索引获取单元格值。您必须使用 contentTable.getColumns().get(7).getCellObservableValue(i).getValue() 获取该列 Savings 的单元格值。

int totalSavingValue=0;
       for (int i= 0;i<tblDispatchHistory.getItems().size();i++){
            total = total+Integer.valueOf(String.valueOf(contentTable.getColumns().get(7).getCellObservableValue(i).getValue()));
           }
 System.out.println(totalSavingValue);
 tSL.setText(totalSavingValue);

关于JavaFX 如何通过按钮从 TableView 中获取特定列的所有值和总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55892225/

相关文章:

java - 如何将多个参数传递到 Play 2.0 中的模板中?

java - 如何在 JavaFX 中禁用/隐藏工具提示

java - java 和 javafx 之间有什么最大的区别

javafx - 去饱和效果冲走对比度

java - 单例中的双重检查锁定

java - 在 Java Camera2 API 中使用 OpenCV

java - 如何使用由 .dot 分割的字符串 ArrayList 中的一个键和多个值填充 hashmap?

java - 是否可以通过编程方式为一种方法和它将调用的方法禁用 log4j?

JavaFX ListView selectedItemProperty 未在clearSelection(index) 上触发

JavaFX 绑定(bind)不传递值