Рассчитать сумму значений выделенных ячеек в JTable - PullRequest
0 голосов
/ 04 сентября 2018

Я снова возвращаюсь со своими проблемами. Я только начинающий, который изучает код Java.

У меня есть JTable, позволяющий мне отображать данные из моей базы данных. Я хочу выполнить вычисления для нескольких ячеек (выбрав строку) таблицы.

Я хочу иметь возможность добавлять или уменьшать значение целевой ячейки в зависимости от того, выбрана ли строка в моей таблице или нет.

Для этого я создал переменную, позволяющую мне хранить сумму значений выбранных ячеек. Затем я использовал MouseEvent, чтобы прослушать щелчок по строке. Наконец, я получаю значение выбранной строки (целевой ячейки) методом getValuesAt().

В настоящее время этот код позволяет мне подводить итоги, нажимая на строку. Но он считает только выбранные строки; скорее это сумма существующего значения с новым выбором. Я не знаю, как написать код, разрешающий мне только выделенные строки.

Вот мой код:

Для отображения данных:

public void remplirTableau(){
    MetierImpl metier=new MetierImpl();
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    String codeCli=cmbCodeCli.getSelectedItem().toString();
    List<Echeancier> opss=metier.consulterEcheancierNonRembourser(codeCli);
    model = new DefaultTableModel(){
        @Override
        public boolean isCellEditable(int iRowIndex, int iColumnIndex)
        {
            return false;
        }
        @Override
        public Class<?> getColumnClass(int columnIndex) {
            if (columnIndex==1 || columnIndex==2 || columnIndex==3) {
                return Object.class; // le type des données de la première colonne
            }else{
                return Double.class;
            }
        }
    };
    model.setColumnIdentifiers(new Object[]{"Ref","Date prévu","Date réalisé","Dégré","Capital","Amortis","Interet","Epargne","Echeance"});
    Object[] row = new Object[9];

    for(Echeancier cl:opss){ 
        row[0] = cl.getIdEch();
        row[1] = sdf.format(cl.getDateEch());
        if(cl.getDateR()!=null){
            row[2] = sdf.format(cl.getDateR());
        }else{
            row[2] = cl.getDateR();
        }
        row[3] = cl.getNumEch();
        row[4] = cl.getCapital();
        row[5] = cl.getAmorti();
        row[6] = cl.getInteret();
        row[7] = cl.getEpargne();
        row[8] = cl.getEcheance();

        model.addRow(row);
    }
    table.setModel(model);
}

Чтобы прослушать щелчки и выполнить математику:

private double valeur=0;
private void maybeShowPopup(MouseEvent e) {
    int row=table.getSelectedRow();
    MetierImpl metier=new MetierImpl();
    //double valeur=0;
    try {
        if (e.getClickCount()==1) {
            for (int i = 0; i < table.getRowCount(); i++) {
                valeur+=(double)(table.getModel().getValueAt(row, 5));
            }
        }
        System.out.println(valeur);
    } catch (Exception e2) {
        JOptionPane.showMessageDialog(null, "Veuillez selectionné la ligne concernée.");
    }
}

На JTable я сделал это:

table = new JTable();
/**
* Cette action permet de faire une action sur un Jtable
*/
table.addMouseListener(new MouseAdapter() {
    @Override
    public void mousePressed(MouseEvent e) {
        maybeShowPopup(e);
    }
    @Override
    public void mouseReleased(MouseEvent e) {
        maybeShowPopup(e);
    }
});
scrollPane.setViewportView(table);

1 Ответ

0 голосов
/ 07 сентября 2018

вкратце о моей проблеме. Я пытаюсь суммировать значения выбранных полей в JTable. Если я нажимаю на первое поле, отображается только его значение. если я нажимаю на второе поле, его значение добавляется к значению первого и так далее. С другой стороны, если я отменил выбор поля, его значение уменьшается в существующей сумме. Я хочу банку для Excel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...