A atualização de JTable não é exibida

Estou desesperadamente tentando convencer minhaJTable para atualizar quando eu mudar seus dados. Os dados são armazenados em um singleton global,TreeSetque estou trabalhando. Sempre que oTreeSets dados são alterados, um evento é disparado para atualizar oTableModel. Para fins de teste, eu substitui isso por um simplesTimer eventos de disparo.

Cada vez que um evento é disparado, um elemento doTreeSet é removido para simular alterações nos dados. O evento é acionado e oTableClass recebe e processa como esperado, mas quando se trata de atualizar nada acontece. Eu tentei criar um novoTableModel cada vez que um evento ocorre e o configura para a tabela global. As mudanças no singletonTreeSet são feitas, mas nada acontece com oJTable.

<code>public class TreeTableObj implements ActionListener{
public JTable table ;

public TreeTableObj(){
    MyTableModel myModel = new MyTableModel(getValuesOfTreeSet(), getTreeSetRows());

    table = new JTable( myModel){ //some rendering };

    table.setAutoCreateRowSorter(true);
    }

    class MyTableModel extends AbstractTableModel {
        private String[] columnNames;
        private Object[][] data ;


        public MyTableModel(Object[][] data, String[] columnNames){
            this.data = data;
            this.columnNames = columnNames;
            System.out.println("Model created");
        }

        public int getColumnCount() {
            return columnNames.length;
        }

        public int getRowCount() {
            return data.length;
        }

        public String getColumnName(int col) {
            return columnNames[col];
        }

        public Object getValueAt(int row, int col) {
            return data[row][col];
        }

        public void setData(Object[][] data){
            this.data = data;
            fireTableDataChanged();
        }


        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }


        public boolean isCellEditable(int row, int col) {
            if (col < 2) {
                return false;
            } else {
                return true;
            }
        }


        public void setValueAt(Object value, int row, int col) {
            if (true) {
                System.out.println("Setting value at " + row + "," + col
                                   + " to " + value
                                   + " (an instance of "
                                   + value.getClass() + ")");
            }

            data[row][col] = value;
            fireTableCellUpdated(row, col);

            if (true) {
                System.out.println("New value of data:");
                printDebugData();
            }
        }

        private void printDebugData() {
            int numRows = getRowCount();
            int numCols = getColumnCount();

            for (int i=0; i < numRows; i++) {
                System.out.print("    row " + i + ":");
                for (int j=0; j < numCols; j++) {
                    System.out.print("  " + data[i][j]);
                }
                System.out.println();
            }
            System.out.println("--------------------------");
        }
    }

    public void refreshTableModel(){
        FlightsTreeSet.getInstance().remove(FlightsTreeSet.getInstance().first());
        table.setModel(new MyTableModel(getValuesOfTreeSet(), getTreeSetRows()));
        }

    public void actionPerformed(ActionEvent arg0) {
        refreshTableModel();    
    }
}
</code>

Qualquer ajuda seria apreciada!

[EDIT1]

Estou me aproximando dos problemas Core: Descobri que a tabela que é exibida no JFrame contém outra referência como a que eu mudo. Eu fiz todas as alterações visíveis e elas se aplicam ao modelo.

questionAnswers(2)

yourAnswerToTheQuestion