Originariamente inviato da dr.m0nst3r
hai provato ad usare:
tableModel.fireTableDataChanged();
Ciao, si ho provato, ma non succede niente

Premetto che il problema è senz'altro dovuto alla mia scarsa esperienza con questo oggetto, quindi avrò senz'altro combinato qualcosa di strano nello scrivere il programma.

Per floyd: ti posto qui sotto un po' di codice, considera che la jtable visualizza degli oggetti "Scadenza" che si trovano in una classe contenitore "elenco". Il jframe contiene la jtable e alcuni pulsanti per aggiungere/togliere gli oggetti dall'elenco.
quando premo "aggiungi" viene creata una nuova istanza di un oggetto scadenza che viene passato come parametro ad un apposito JDialog dove l'utente setta i suoi valori. Quando premere ok nel dialog, viene sparato un evento di "nuova scadenza creata" che il frame intercetta ed in base al quale dovrebbe aggiornarsi.
Spero che si sia capito qualcosa...

JButton per cancellare una riga
private void cmdDeleteActionPerformed(java.awt.event.ActionEven t evt) {
try {
int ret = JOptionPane.showConfirmDialog(this,"Sicuro di cancellare la scadenza selezionata?");
if (ret==JOptionPane.YES_OPTION) {
// --- cancello la scadenza (estm è il tablemodel)
estm.removeRow(tblScadenze.getSelectedRow());
}
}
catch (Exception ex) {
JOptionPane.showMessageDialog(this,ex.toString());
}
}

Metodo del tablemodel per cancellare una scadenza dalla lista
/**
* Rimuove la riga indicata e con essa l'oggetto scadenza dall'elenco.
*/
public void removeRow(int row) {
if (row>=getRowCount() || row<0) {
System.out.println("Riga " + row + " fuori range.");
}
try {
elenco.rimuoviScadenza(getScadenzaAtRow(row));
fireTableRowsDeleted(row,row);
System.out.println("Riga cancellata");
}
catch (Exception ex) {
ex.printStackTrace();
}
}

Pulsante per l'aggiunta di una scadenza
private void cmdAddActionPerformed(java.awt.event.ActionEvent evt) {
// --- Creo una nuova scadenza
Scadenza s = new Scadenza(
"Nuova scadenza",
"Descrizione",
new java.util.Date(),
null
);
ScadenzaDialog sd = new ScadenzaDialog(
this,
true,
Scadenza.FLAG_NUOVA_SCADENZA,
s,
elenco.getDeperibili()
);
sd.addScadEventListener(this);
sd.show(true);
}

Gestore eventi
/**
* Reagisce agli eventi lanciati dai dialog box quando si modificano le
* scadenze (aggiorna la tabella).

* Metodo dell'interfaccia ScadEventListener
*/
public void eventPerformed(ScadEvent ev) {
int tipo = ev.getTipo();
switch (tipo) {
case (ScadEvent.SCADENZA_CHANGED): {
ordinaTabella();
break;
}
case (ScadEvent.SCADENZA_NEW): {
// --- aggiungo una scadenza all'elenco
try {
Object obj = ev.getSource();
if (obj instanceof Scadenza) {
Scadenza s = (Scadenza)obj;
elenco.aggiungiScadenza(s);
TableModelEvent tme = new TableModelEvent(
tblScadenze.getModel(),
0,
elenco.getChildren().size()-1,
TableModelEvent.INSERT
);
estm.fireTableChanged(tme);
//estm.fireTableRowsInserted(0,estm.getRowCount());
//tblScadenze.getUI().update(tblScadenze.getGraphics (),tblScadenze);
//tblScadenze.update(tblScadenze.getGraphics());
//tblScadenze.updateUI();
}
}
catch (Exception ex) {
System.out.println(ex.toString());
}
ordinaTabella();
break;
}
case (ScadEvent.SCADENZA_DELETED): {
try {
Object obj = ev.getSource();
if (obj instanceof Scadenza) {
Scadenza s = (Scadenza)obj;
elenco.rimuoviScadenza(s);
}
}
catch (Exception ex) {
}
ordinaTabella();
break;
}
}
}

Grazie della disponibilità!