Problema em Sistema Java... AJUDA

Olá a todos!

Estou terminando o projeto de um sistema de vendas em java.

Tenho uma janela chamada “frm_vender” onde eu coloco os produtos que quero vender. Na hora que clico no botão “Processar” que está nessa janela, preciso que abra uma outra janela secundária que seria a frm_pagar, onde aparecerá o valor dos produtos que eu escolhi, deverei colocar o valor que o cliente me deu (em dinheiro), e assim, abaixo deverá aparecer a diferença (o troco)… Até ali tudo certo.

O que eu preciso:
Preciso que quando eu dê o finalizar no frm_pagar, feche essa janela, e a outra onde estão os produtos deve ficar em branco e gravar os dados na base de dados.

O problema está aqui:
No momento, quando eu clico em “processar” na frm_vender, o sistema deveria abrir a janela secundária frm_pagar e pausar a execução até eu colocar o valor que o cliente me deu e assim somar no caixa, porém o sistema continua a execução e ja entra na função de zerar e descontar do estoque, etc.

Como faço para que o sistema “pause” a execução do método durante que a frm_pagar estar ativa?

Você vai precisar optar por um pattern como o observer, assim, quando abrir a janela secundária (observable), a janela principal fica aguardando (observer) o aviso para seguir (na verdade, executar o método para finalizar as coisas).
Existem outras opções, uma delas seria passar a instância da janela principal como argumento ao construtor da janela secundária e, ao final do que precisa fazer na janela secundária, invocar o método seguinte na principal. Mas, isso é meio que gambiarra.

Acho que o ideal seria usar uma janela modal. A janela modal pausa a execução do método até que esta seja fechada ou finalizada.

Em Swing:

class JanelaPagar extends JDialog {
  public JanelaPagar() {
    super();
    setModal(true);
  }
  void fechar() {
    setVisible(false);
  }
  void finalizar() {
    dispose();
  }
}

botaoProcessar.addActionListener(
  if (frm_pagar == null) {
    frm_pagar = new JanelaPagar();
  }
  System.out.println("Abrindo janela pagar");
  frm_pagar.setVisible(true); // pausa a execução aqui e só continua depois que a janela fechar
  System.out.println("Fechou janela pagar");
);

Muito obrigado pela dica irmao, vou me aprofundar no assunto!!!

Muito obrigado Diego! Funcionou perfeitamente!!!