Atualizar Jtable depois de inserir dados no JDialog

Estou com problemas com meu Jtable em atualiza-lo depois de inserir dados através de um JDialog. Só atualiza depois de criar um nova instância e não quando se recebe novos dados.

MedicoTableModel

public  class MedicoTableModel extends AbstractTableModel {

    MedicoDAO medDAO=new MedicoDAO();
    
    public List<Medico> dados =medDAO.tableMedicos();
    private String[] colunas = {"Id","Médico", "UF", "Município", "CRM", "Especialidade"};

    @Override
    public String getColumnName(int column) {
        return colunas[column]; //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public int getRowCount() {
        return dados.size();
    }

    @Override
    public int getColumnCount() {
        return colunas.length;
    }
  
    @Override
    public Object getValueAt(int linha, int coluna) {

        switch (coluna) {
             case 0:
                return dados.get(linha).getId();
            case 1:
                return dados.get(linha).getNomeMedico();
            case 2:
                return dados.get(linha).getUF();
            case 3:
                return dados.get(linha).getMunicipio();
            case 4:
                return dados.get(linha).getCrm();
            case 5:
                return dados.get(linha).getMedEsp().getEspecialidade();
        }

        return null;

    }

    public void addRow(Medico m) {
        this.dados.add(m);
        this.fireTableDataChanged();
    }

    public void removeRow(int linha) {
        this.dados.remove(linha);
        this.fireTableRowsDeleted(linha, linha);
    }

}

CadastroMedicos JFrame

   public CadastroMedicos() {

        initComponents();

       
        jTableMedicos.setModel(medTable);

    }

Novo Medico JDialog

  private void jButtonSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here:
        Medico med=new Medico();
        MedicoDAO medDao=new MedicoDAO();
    MedicoTableModel medTable = new  MedicoTableModel();
     
        med.setNomeMedico(jTextFieldMedico.getText());
        med.setUF((String) jComboBoxUF.getSelectedItem());
        med.setMunicipio((String) jComboBoxMun.getSelectedItem());
        med.setCrm(jTextFieldCRM.getText());
        med.setMedEsp((MedicoEspecializacao) jComboBoxEsp.getSelectedItem());
        medDao.salvar(med);
     
        medTable.addRow(med);
    
     
   this.dispose();
   
    }

com o firetable não resolve medTable.fire…

Onde que você apresenta o JDialog?

No CadastrosMedicos

public class CadastroMedicos extends javax.swing.JInternalFrame {

    /**
     * Creates new form CadastroMedicos
     */
    MedicoTableModel medTable = new MedicoTableModel();

    protected static String id;
    protected static String medico;
    protected static String uf;
    protected static String mun;
    protected static String crm;
    protected static String esp;

    public CadastroMedicos() {

        initComponents();

       
        jTableMedicos.setModel(medTable);

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTableMedicos = new javax.swing.JTable();
        jButtonCadMed = new javax.swing.JButton();
        jButtonEditMed = new javax.swing.JButton();
        jButtonExcMed = new javax.swing.JButton();
        jButtonFechar = new javax.swing.JButton();

        jTableMedicos.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null}
            },
            new String [] {
                "Medico", "UF", "Município", "CRM", "Especialidade"
            }
        ));
        jTableMedicos.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTableMedicosMouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(jTableMedicos);
        if (jTableMedicos.getColumnModel().getColumnCount() > 0) {
            jTableMedicos.getColumnModel().getColumn(0).setResizable(false);
            jTableMedicos.getColumnModel().getColumn(1).setResizable(false);
            jTableMedicos.getColumnModel().getColumn(2).setResizable(false);
            jTableMedicos.getColumnModel().getColumn(3).setResizable(false);
            jTableMedicos.getColumnModel().getColumn(4).setResizable(false);
        }

        jButtonCadMed.setText("Cadastrar Médico");
        jButtonCadMed.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonCadMedActionPerformed(evt);
            }
        });

        jButtonEditMed.setText("Editar Médico");
        jButtonEditMed.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonEditMedActionPerformed(evt);
            }
        });

        jButtonExcMed.setText("Excluir Médico");
        jButtonExcMed.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonExcMedActionPerformed(evt);
            }
        });

        jButtonFechar.setText("Fechar");
        jButtonFechar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonFecharActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1)
            .addGroup(layout.createSequentialGroup()
                .addGap(119, 119, 119)
                .addComponent(jButtonCadMed)
                .addGap(27, 27, 27)
                .addComponent(jButtonEditMed)
                .addGap(27, 27, 27)
                .addComponent(jButtonExcMed)
                .addGap(18, 18, 18)
                .addComponent(jButtonFechar)
                .addContainerGap(202, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 377, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButtonCadMed)
                    .addComponent(jButtonEditMed)
                    .addComponent(jButtonExcMed)
                    .addComponent(jButtonFechar))
                .addGap(0, 20, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void jButtonCadMedActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here:
        NovoMedico tlm = new NovoMedico(null, true);
        tlm.setVisible(true);
        /*
       NovoMedicoOld nov= new NovoMedicoOld();
       getParent().add(nov);
       nov.setVisible(true);*/
    }                                             

    private void jButtonFecharActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here:
        this.dispose();
    }                                             

    private void jButtonEditMedActionPerformed(java.awt.event.ActionEvent evt) {                                               
        // TODO add your handling code here:
        EditarMedico tlm = new EditarMedico(null, true);
        tlm.setVisible(true);


    }                                              

    private void jTableMedicosMouseClicked(java.awt.event.MouseEvent evt) {                                           
        // TODO add your handling code here:
        if (evt.getClickCount() == 1) {
            Object obj = (jTableMedicos.getValueAt(jTableMedicos.getSelectedRow(), 0));
            Object obj1 = (jTableMedicos.getValueAt(jTableMedicos.getSelectedRow(), 1));
            Object obj2 = (jTableMedicos.getValueAt(jTableMedicos.getSelectedRow(), 2));
            Object obj3 = (jTableMedicos.getValueAt(jTableMedicos.getSelectedRow(), 3));
            Object obj4 = (jTableMedicos.getValueAt(jTableMedicos.getSelectedRow(), 4));
            Object obj5 = (jTableMedicos.getValueAt(jTableMedicos.getSelectedRow(), 5));

            id = obj.toString();
            medico = obj1.toString();
            uf = obj2.toString();
            mun = obj3.toString();
            crm = obj4.toString();
            esp = obj5.toString();

        }

    }                                          

    private void jButtonExcMedActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here:
        MedicoDAO medDao = new MedicoDAO();
        if (id == null) {
            JOptionPane.showMessageDialog(
                    null, "Seleciona uma linha da tabela", "Mensagem de Erro", JOptionPane.ERROR_MESSAGE);
        } else {
            int resposta = JOptionPane.showConfirmDialog(null, "Confirma a exclusão", "Exclusão", JOptionPane.YES_NO_OPTION);

            if (resposta == JOptionPane.YES_OPTION) {
                medDao.remove(Long.parseLong(id));
            }

        }


    }