Somar dados formatados

estou com problema em somar uma coluna da minha jtable onde os dados estão formatados com NumberFormat o problema é o seguinte. quando eu envio os dados para a minha tabela da esquerda tem um botão confirmar esse botão é responsavel por efetuar a soma da coluna valor da minha jtable e mostrar em um Jtwxtfield o problema é que ele não está mais somando por causa do numberFormat que está entrando string por causa do R$ e a virgula. alguem pode me ajudar??

 private void prencherTabela(){

        try {
            ProdutoServicos ps = ServicosFactory.getProdutoServicos();
           
            ArrayList<ProdutoVO> prod = new ArrayList<>();
            
            prod = ps.buscarProdutos();
             
                //Locale Brasil = new Locale("pt", "BR");
               NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale ("pt", "BR"));
                //DecimalFormat df = new DecimalFormat("0,00");
                 
            for(int i = 0; i < prod.size(); i++){
               dtm.addRow(new String[]{
                  String.valueOf(prod.get(i).getIdProduto()),
                  String.valueOf(prod.get(i).getNomeProduto()),
                  //String.valueOf(prod.get(i).getValorCusto())
                  nf.format(prod.get(i).getValorCusto())

              });
            }//fecha for
            
            
            jtProdutos.setModel(dtm);
            
        } catch (Exception e) {    
            JOptionPane.showMessageDialog(
                        null,
                        "Erro ao Prencher tabela!",
                        "Mensagem de Erro",
                        JOptionPane.INFORMATION_MESSAGE);
        }//fecha catch
    }//fecha prencher tabelaProdutos
            
   private void prencherTabelaComprar(){
     
       if (jtProdutos.getSelectedRowCount()!=0){ //Verifica se existe linha selecionada para não dar erro na hora de pegar os valores
	//Pega os models das listas, para fazer as inserções e remoções
	DefaultTableModel modelOrigem = (DefaultTableModel) jtProdutos.getModel();
	DefaultTableModel modelDestino = (DefaultTableModel) jtComprar.getModel();           
	//Cria uma linha para ser incluida na tabela de destino, no meu caso tem duas colunas, adapte para as suas tabelas
	Object[] obj = {jtProdutos.getValueAt(jtProdutos.getSelectedRow(), 0),
                        jtProdutos.getValueAt(jtProdutos.getSelectedRow(), 1),
                        jtProdutos.getValueAt(jtProdutos.getSelectedRow(), 2)};
                       // jtProdutos.getValueAt(jtProdutos.getSelectedRow(), 3)};
	//Adiciona no destino e remove da origem
	modelDestino.addRow(obj);
        
        
        //modelOrigem.removeRow(jtProdutos.getSelectedRow());
} else { 
                  JOptionPane.showMessageDialog(
                        null,
                        "você não selecionou nenhuma linha!",
                        "Mensagem de atenção",
                        JOptionPane.INFORMATION_MESSAGE);          
    }//fecha else
   }//fecha prencher tabelaCopmprar

Você usou o NumberFormat para transformar o numero em uma String, nesse caso você só precisa fazer a operação contrária, ao invés do “format”, você vai usar o “parse”, por exemplo, na linha:

jtProdutos.getValueAt(jtProdutos.getSelectedRow(), 2)};

no lugar você pode fazer:

// o nf você vai criar do mesmo jeito que criou antes para preencher a tabela
nf.parse(jtProdutos.getValueAt(jtProdutos.getSelectedRow(), 2))};

Mas essa é apenas uma solução rápida pro seu problema. Na minha opinião, voce precisa estruturar melhor essa aplicação. o jTable deve ser usado apenas para visualização dos dados, não para armazená-los, os dados brutos devem ficar separados, e é neles que você faz as operações, não no jTable diretamente.

bha vlw funcionou 100%