import javax.swing.JApplet; import javax.swing.JTable; import javax.swing.JPanel; import javax.swing.table.DefaultTableModel; import javax.swing.JScrollPane; import javax.swing.BorderFactory; import javax.swing.event.TableModelListener; import javax.swing.event.TableModelEvent; import java.awt.Dimension; import java.awt.BorderLayout; import java.awt.Color; import java.text.DecimalFormat; public class TableurApplet extends JApplet implements TableModelListener { JTable table; DefaultTableModel tableur; public void init() { tableur = new DefaultTableModel(); tableur.addColumn("Nom"); tableur.addColumn("Note1"); tableur.addColumn("Note2"); tableur.addColumn("Note3"); tableur.addColumn("Moyenne"); tableur.setRowCount(10); table = new JTable(tableur); table.setPreferredScrollableViewportSize(new Dimension(300, 200)); add(new JScrollPane(table), BorderLayout.CENTER); tableur.addTableModelListener(this); } public void tableChanged(TableModelEvent e) { if (e.getType() != TableModelEvent.UPDATE) return; int colonne = e.getColumn(); int nbColonnes = tableur.getColumnCount(); if ((colonne == 0) || (colonne == nbColonnes - 1)) return; int ligne = e.getFirstRow(); int i, somme = 0, nb = 0; String chaine; DecimalFormat forme = new DecimalFormat(); forme.setMaximumFractionDigits(2); for (i = 1; i < nbColonnes - 1; i++) { try { chaine = (String)tableur.getValueAt(ligne, i); if (chaine != null) { somme += Integer.parseInt(chaine); nb++; } } catch(NumberFormatException exc) { System.out.println("Les notes doivent etre des entiers"); } } if (nb > 0) tableur.setValueAt(forme.format((double)somme/nb), ligne, nbColonnes - 1); else tableur.setValueAt("", ligne, nbColonnes - 1); } }