Olá Pessoal, tenho um evento de clique em um TextField e um try-catch e estou tendo um problema de loop com o JOptionPane quando clico no "ENTER"!

Boa noite galera, sou novo aqui e ainda não sei como funciona bem as coisas, mas vamos lá…Estou aprendendo a criar um sistema de vendas e criei esse método para pegar informações de um TextFiel e jogar dentro de uma tabela através do clique do botão enter. Criei um try-catch para tratar exceções e, se entrar no catch, abre uma JOptionPane e, quando aperto enter novamente o botão “OK” do JOptionPane é apertado por padrão. Porém, quando clico no enter para fechar o JOptionPane, ele fecha e abre de novo, pois é como se o evento de clique do TextField fosse ativado, a acaba ficando um espécie de loop, onde toda vez que aparece o JOptionPane e o enter é apertdado, ele some e aparece de novo. Ainda não achei nenhuma solução. Alguém poderia de ajudar? Desde já agradeço.

 private void pegarConteudo(java.awt.event.KeyEvent e) {
            jLabelStatus.setText("Caixa Aberto");
            DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel();
            if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {//Verifica se a tecla ENTER foi pressionada 
                try {

                    modelProdutos = controllerProdutos.retornarProdutosController(Integer.parseInt(jTextFieldPesquisa.getText()));
                    modelo.addRow(new Object[]{
                        modelo.getRowCount() + 1,
                        modelProdutos.getIdProduto(),
                        modelProdutos.getProdutoNome(),
                        quantidade,
                        modelProdutos.getProdutoValor(),
                        modelProdutos.getProdutoValor() * quantidade
                    });
                    jTextFieldValorTotal.setText(somaValorTotal() + "");
                    jTextFieldPesquisa.setText("");
                    quantidade = 1;
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(this, "Produto não cadastrado", "ERRO", JOptionPane.ERROR_MESSAGE);
                    jTextFieldPesquisa.setText("");
                   

                }
            }

        }

cria uma variavel fora desse bloco try catch para receber um inteiro referente a resposta desse JOptionPane

ex: int resp = JOptionPane.showMessageDialog(this, “Produto não cadastrado”, “ERRO”, JOptionPane.ERROR_MESSAGE);

e aqui faz assim;

if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER && resp != 0)

Não da pra atribuir um valor a uma variável referente à resposta do JOptionPane.showMessageDialog.
Esse exemplo aqui em baixo que vc me passou não funciona:

ex: int resp = JOptionPane.showMessageDialog(this, “Produto não cadastrado”, “ERRO”, JOptionPane.ERROR_MESSAGE);