Changer le contenu d'une cellule dans une JTable

eric110566 - 13 janv. 2015 à 16:12
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 14 janv. 2015 à 12:09
Bonjour,

Débutant en Java, je recherche la méthode pour pouvoir changer le contenu d'une cellule dans une JTable.

Cette JTable récupère un produit, son prix unitaire, une quantité qui est équivalente à 1 au départ et que j'aimerai modifié et le prix total ( quantité * prix unitaire).



Est ce que quelqu'un aurait la solution ? Merci.

1 réponse

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
14 janv. 2015 à 12:09
Salut,

Pour récupérer la valeur d'une cellule:
-> table.getValueAt(row, column)
Pour modifier la valeur d'une cellule:
-> table.setValueAt(value, row, column)

Exemple:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class JTableUpdate {
  public static void main(String args[]) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Object rowData[][] = { { "1", "2.5", "" }, { "4", "50", "" } };
    Object columnNames[] = { "Nb", "Price", "Total" };
    final JTable table = new JTable(rowData, columnNames);
    frame.add(new JScrollPane(table), BorderLayout.CENTER);
    
    JButton button = new JButton();
    button.setText("Total");
    button.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        /* pour toutes les lignes */
        for(int i = 0; i < table.getRowCount(); i++) {
          int nb = Integer.parseInt("" + table.getValueAt(i, 0));
          float price = Float.parseFloat("" + table.getValueAt(i, 1));
          float total = nb * price;
          table.setValueAt(total, i, 2);
        }
      }
    });
    frame.add(button, BorderLayout.NORTH);
    
    frame.setSize(300, 150);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

  }
}

1
Rejoignez-nous