Modifier une cellule JTable
bonjour,
J'ai une Jtable où l'on peut modifier le contenu des cellules.
Je souhaite récupérer le contenu de la cellule pour pouvoir y faire des tests (cellule vide...).
J'ai donc fait ceci mais sa ne fonctionne pas: mon message de test ne s'affiche pas dans la console:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| public class ModuleTableModele extends AbstractTableModel{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
private final List<Module> modules;
private final String[] entetes = {"Nom", "Abréviation", "Couleur", "Nombre séances"};
public ModuleTableModele(List<Module> modules) {
super();
this.modules = modules;
}
public int getRowCount() {
return modules.size();
}
public int getColumnCount() {
return entetes.length;
}
public String getColumnName(int columnIndex) {
return entetes[columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
if(aValue != null){
Module module = modules.get(rowIndex);
switch(columnIndex){
case 0:
module.setNom((String)aValue);
break;
case 1:
module.setAbreviation((String)aValue);
break;
case 2:
module.setCouleur((Color)aValue);
break;
case 3:
String seance = (String)aValue;
module.setNbSeance(Integer.parseInt(seance));
break;
}
}
}
public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex){
case 0:
return modules.get(rowIndex).getNom();
case 1:
return modules.get(rowIndex).getAbreviation();
case 2:
return modules.get(rowIndex).getCouleur();
case 3:
return modules.get(rowIndex).getNbSeance();
default:
return null;
}
}
public Class getColumnClass(int columnIndex){
switch(columnIndex){
case 2:
return Color.class;
default:
return Object.class;
}
}
public void addModule(Module module) {
modules.add(module);
fireTableRowsInserted(modules.size() -1, modules.size() -1);
}
public void removeModule(int rowIndex) {
modules.remove(rowIndex);
fireTableRowsDeleted(rowIndex, rowIndex);
}
public List<Module> getModules(){
return modules;
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| public class ModuleTable extends JPanel implements TableModelListener{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
private ModuleTableModele moduleModele;
private JTable tableau;
public ModuleTable(List<Module> modules) {
super();
moduleModele = new ModuleTableModele(modules);
tableau = new JTable(moduleModele);
tableau.getTableHeader().setBackground(Color.YELLOW);
//Empêche le déplacement des colonne
tableau.getTableHeader().setReorderingAllowed(false);
//Empêche de changer la taille des colonne
tableau.getTableHeader().setResizingAllowed(false);
tableau.setDefaultRenderer(Color.class, new CouleurModuleRenderer());
tableau.setDefaultEditor(Color.class, new ColorCellEditor());
tableau.getModel().addTableModelListener(this);
add(new JScrollPane(tableau), BorderLayout.NORTH);
}
public void addModule(metiers.Module module){
moduleModele.addModule(module);
}
public void removeModule(ModuleTable moduleTable){
int[] selection = tableau.getSelectedRows();
if(selection.length > 0){
int option = JOptionPane.showConfirmDialog(null, "Voulez-vous supprimer le module ?", "Suppression d'un module", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if(option != JOptionPane.NO_OPTION &&
option != JOptionPane.CANCEL_OPTION &&
option != JOptionPane.CLOSED_OPTION){
for(int i = selection.length - 1; i >= 0; i--){
moduleModele.removeModule(selection[i]);
}
}
}else{
JOptionPane.showMessageDialog(moduleTable, "Vous n'avez pas seléctionné de module !");
}
}
public List<Module> getModules() {
List<Module> modules = new ArrayList<Module>();
modules = moduleModele.getModules();
return modules;
}
@Override
public void tableChanged(TableModelEvent event) {
int firstRow = event.getFirstRow();
int lastRow = event.getLastRow();
int mColIndex = event.getColumn();
switch (event.getType()) {
case TableModelEvent.UPDATE:
System.out.println("TEST UPDATE");
if (firstRow == TableModelEvent.HEADER_ROW) {
if (mColIndex == TableModelEvent.ALL_COLUMNS) {
// A column was added
} else {
// Column mColIndex in header changed
}
} else {
// The rows in the range [firstRow, lastRow] changed
for (int r=firstRow; r<=lastRow; r++) {
// Row r was changed
if (mColIndex == TableModelEvent.ALL_COLUMNS) {
// All columns in the range of rows have changed
} else {
// Column mColIndex changed
}
}
}
break;
}
}
} |
Merci de votre aide