Desabilitar linha da tabela ao utilizar o MouseClicked

Boa noite, Preciso de ajuda.

Quero desabilitar uma linha da tabela ao dar dois click nessa linha.

Olha o meu método de atualizar tabela.

protected void atualizarTabela() {
try {
DefaultTableModel model = (DefaultTableModel) tabela.getModel();
model.setNumRows(0);

        lista = new MesaDao().getLista();

        for (Mesa c : lista) {
            model.addRow(new Object[]{
                c.getNumero(),
                c.getStatus().equals("ATIVO") ? "DISPONIVEL" : "INDISPONIVEL",
                     
            });
            
            
        }

    } catch (Exception e) {
        e.printStackTrace();
        Msg.erro(this, "Erro ao Atualizar Tabela!\nErro: " + e.getMessage());
    }
}

Olha o meu MouseClicked

private void tabelaMouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getClickCount() == 2) {
pai.mesa = lista.get(tabela.getSelectedRow());
this.dispose();
}
}

Não utilize DefaultTableModel!
Implemente seu próprio TableModel estendendo AbstractTableModel, aí basta implementar a lógica de habilitar/desabilitar sobrescrevendo o método isCellEditable.

Boa noite!
você tem algum exemplo?

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.AbstractTableModel;

@SuppressWarnings("serial")
public class ExemploTableModel extends JFrame {

	/**
	 * Modelo hipotético para fornecer dados para a JTable
	 */
	private class MeuTableModel extends AbstractTableModel {

		/**
		 * A JTable chama esse método para saber quantas colunas ela possui
		 */
		@Override
		public int getColumnCount() {
			// minha JTable terá 3 colunas
			// poderia ter tantas quanto eu quisesse
			return 3;
		}

		/**
		 * A JTable chama esse método para saber qual é o nome da coluna informada
		 */
		@Override
		public String getColumnName(int col) {
			// o nome das colunas será "coluna 0", "coluna 1" e "coluna 2"
			// mas poderia ser algo mais óbvio como "Nome", "Idade" e "Gênero" por exemplo
			return "Coluna " + col;
		}

		/**
		 * A JTable chama esse método para saber quantos itens ela possui
		 */
		@Override
		public int getRowCount() {
			// minha JTable terá 10 mil linhas
			// mas poderia por exemplo retornar o tamanho da lista de objetos que quero
			// renderizar
			return 10000;
		}

		/**
		 * A JTable chama esse método para saber qual o valor que ela deve apresentar na
		 * célula informada
		 */
		@Override
		public Object getValueAt(int lin, int col) {
			// cada célula da minha JTable vai renderizar sua linha e sua coluna
			// mas poderia fazer o seguinte:
			// pegar o objeto na posição "lin" da lista
			// um switch da coluna e com isso
			// devolver o valor dos atributos "nome", "idade" e "genero"
			return "célula (" + lin + ", " + col + ")";
		}

		/**
		 * A JTable chama esse método para saber se a célula informada é editável ou não
		 */
		@Override
		public boolean isCellEditable(int lin, int col) {
			/*
			 * Aqui você verifica a condição para habilitar ou desabilitar a edição da célula
			 * 
			 * return true se pode editar
			 * 
			 * return false se não pode editar
			 */
		}
	}

	/**
	 * Ponto de entrada do exemplo
	 */
	public static void main(String[] args) {
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
			JFrame janela = new ExemploTableModel();
			janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			janela.setSize(640, 480);
			janela.setLocationRelativeTo(null);
			janela.setVisible(true);
		} catch (Throwable t) {
			t.printStackTrace();
		}
	}

	// a JTable
	private JTable minhaJTable;

	// modelo da minha JTable
	private MeuTableModel meuTableModel;

	private ExemploTableModel() {
		super("Exemplo");

		meuTableModel = new MeuTableModel();
		minhaJTable = new JTable(meuTableModel);

		JScrollPane scroll = new JScrollPane(minhaJTable);
		Container panel = getContentPane();
		panel.add(BorderLayout.CENTER, scroll);
	}
}