JavaFX Как получить все значения и сумму определенного столбца из табличного представления по кнопке? - PullRequest
3 голосов
/ 28 апреля 2019

У меня проблема с добавлением функциональности в мою программу. Я использую JavaFX и Table View. Я не знаю, как я могу реализовать метод, который будет получать данные из определенного столбца.

Я пытаюсь реализовать решение из этого сказал: JavaFX Как получить все значения одного столбца из TableView?

Но я не совсем понимаю, как мне отправить инициализированный класс TableColumn в метод totalPaidSaving

И: Как получить выбранную TableCell в 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

Моя цель состоит в том, чтобы после нажатия кнопки «Добавить» приложение показывало мне сумму всех строк сбережений из столбца сохранения в определенной метке. Остальная часть приложения работает.

1 Ответ

0 голосов
/ 29 апреля 2019

Таким образом, вы можете рассчитать значения столбца.Вы можете получить значение ячейки по индексу столбца.Вы должны использовать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...