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 : Sélectionner tout - Visualiser dans une fenêtre à part
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....