Nossa, você gosta do fireTableDataChanged(), hein? Não adianta disparar isso no construtor, pois o model nem estará associado ao JTable ainda:
O problema é que no seu construtor que recebe a lista, você chama o addAll sem dar new na lista.
Sugestão, deixe seus construtores assim:
//Construtor default que apenas cria uma lista vazia de aulasSaida
public AulasTableModel() {
this(new ArrayList<AulaSaida>());
}
//Esse é um construtor, que recebe a nossa lista de aulas
public AulasTableModel(List<AulaSaida> aulasSaida) {
this.aulasSaida = new ArrayList<AulaSaida>(aulasSaida);
}
Já aproveitando, mude seu addRow para:
public void addRow(AulaSaida aulaSaidaNova) {
//Adiciona uma linha na tabela
aulasSaida.add(aulaSaidaNova);
fireTableTableRowsInserted(aulasSaida.size() -1, aulasSaida.size() -1);
}
E tire o fireTableDataChanged do seu setValueAt. Como já te expliquei, ele é desnecessário.
Evite ao máximo chamar fireTableDataChanged. Ele é terrívelmente ineficiente, pois manda a sua JTable redesenhar inteira. No lugar, chame os eventos mais específicos: fireTableRowsDeleted, fireTableRowsInserted e fireTableRowsUpdated