[JTable] probleme suppression ligne
Bonjour,
J'utilise une JTable, je veux pouvoir supprimer des lignes, donc j'ai mis un ListDataListener sur mon model de données.
Le suppression est bien faite s'est à dire que je récupère lo'bjet correspondant à la ligne, et je le supprime, mais l'affichage visuel n'est pas bon.
Si j'ai trois lignes contenant les textes A, B et C et que je supprime B, j'affiche A et B.
Si je quitte ma fenêtre (les données sont sauvegardées) et qu'ensuite je reviens j'affiche bien 2 lignes A et C. -> ca c'est bon.
Pourtant sur le coup, je vois A et B, pourtant j'ai effectué un updateUI sur ma table on voit une ligne qui duisparait mais c'est comme ci le champs n'était pas remis à jour avec le champs de la case d'en dessous.
Voici le code du model de table que j'utilise :
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
|
public class GroupTableAdapter extends DefaultTableModel {
private Model model;
public GroupTableAdapter(Model model) {
this.model = model;
createRowsName();
createColumnsName();
// Ajoute le pont de l'adapteur au modèle.
model.addDataListener(new BridgeListener());
}
public Object getValueAt(int rowIndex, int columnIndex) {
Object value = null;
// Test si première colonne ?
if (columnIndex == 0) {
value = rows[rowIndex];
// Sinon, nom du groupe d'évènement...
} else {
Group group = (Group) model.getElementAt(rowIndex);
value = group.getName();
}
return value;
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
String string = (String) aValue;
Group group = (Group) model.getElementAt(rowIndex);
group.setName(string);
}
/**
* Pont relié au modèle de données.
*/
public class BridgeListener implements ListDataListener {
public void intervalAdded(ListDataEvent listDataEvent) {
final ListDataEvent event = listDataEvent;
EventQueue.invokeLater(new Runnable() {
public void run() {
fireTableRowsInserted(event.getIndex0(), event.getIndex1());
}
});
}
public void intervalRemoved(ListDataEvent listDataEvent) {
final ListDataEvent event = listDataEvent;
EventQueue.invokeLater(new Runnable() {
public void run() {
fireTableRowsDeleted(event.getIndex0(), event.getIndex1());
}
});
}
public void contentsChanged(ListDataEvent listDataEvent) {
final ListDataEvent event = listDataEvent;
EventQueue.invokeLater(new Runnable() {
public void run() {
fireTableStructureChanged();
}
});
}
}
} |
J'espere que le pb est déjà arriver à qq'1, et qu'il pourra me faire bénéficier de son expérience merci d'avance....