Seguinte galera,
Estou estudando Swing, desenvolvendo um aplicativo jurídico de consulta de rubricas. Até agora ele tem dois frames, o primeiro contendo a seguinte JTable:

(o campo id vai sair da tabela depois)
Nesse caso, somente uma linha é selecionável. Ao clicar na linha e no botão “Editar”, pego os dados da linha selecionada e abro um novo frame, contendo os JTextFields já populados com os respectivos dados. Aí o código do ActionPerformed:
private void editarButtonActionPerformed(java.awt.event.ActionEvent evt) {
int viewRow = tabela.getSelectedRow();
if (viewRow == -1) {
JOptionPane.showMessageDialog(null, "Selecione uma linha para ser alterada.");
} else {
int modelRow = tabela.convertRowIndexToModel(viewRow);
RubricaTableModel modelo = (RubricaTableModel) tabela.getModel();
Rubrica rubrica = modelo.getRubrica(modelRow);
RubricaUpdateGUI rubricaUpdate = new RubricaUpdateGUI(rubrica.getId(), rubrica.getDescricao(), rubrica.getAmbito(), rubrica.getCodigo());
rubricaUpdate.setVisible(true);
rubricaUpdate.setAlwaysOnTop(true);
}
}
Segundo frame:

A dúvida que estou tendo é a seguinte: Como faço para acionar um fireTableRowsUpdated ou algo do tipo na primeira tabela ao clicar no botão “Atualizar”, no segundo frame??
A propósito, tô usando um TableModel baseado no modelo do Eric Yuzo, taí o código:
public class RubricaTableModel extends AbstractTableModel {
private List<Rubrica> linhas;
private String[] colunas = new String[]{
"id", "Descricao", "Ambito", "Codigo"};
public RubricaTableModel() {
linhas = new ArrayList<Rubrica>();
}
public RubricaTableModel(List<Rubrica> rubricas) {
linhas = new ArrayList<Rubrica>(rubricas);
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public int getRowCount() {
return linhas.size();
}
@Override
public String getColumnName(int columnIndex) {
return colunas[columnIndex];
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case 0:
return int.class;
case 1:
return String.class;
case 2:
return String.class;
case 3:
return long.class;
default:
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Rubrica rubrica = linhas.get(rowIndex);
switch (columnIndex) {
case 0:
return rubrica.getId();
case 1:
return rubrica.getDescricao();
case 2:
return rubrica.getAmbito();
case 3:
return rubrica.getCodigo();
default:
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public Rubrica getRubrica(int indiceLinha) {
return linhas.get(indiceLinha);
}
public void addRubrica(Rubrica rubrica) {
linhas.add(rubrica);
int ultimoIndice = getRowCount() - 1;
fireTableRowsInserted(ultimoIndice, ultimoIndice);
}
public void removeFicha(int indiceLinha) {
linhas.remove(indiceLinha);
fireTableRowsDeleted(indiceLinha, indiceLinha);
}
public void addListaDeRubrica(List<Rubrica> rubricas) {
int tamanhoAntigo = getRowCount();
linhas.addAll(rubricas);
fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);
}
public void limpar() {
linhas.clear();
fireTableDataChanged();
}
public boolean isEmpty() {
return linhas.isEmpty();
}
}
Desde já, valeu a ajuda! 