Boa noite rapaziada do GUJ.
Estou iniciando em programação e estou com um problema que já estou quebrando cabeça
faz dias e não consigo solucionar.
Tenho uma classe chamada FormPrincipalSwing que extends JFrame que possui uma JMenuBar com um JMenuItem chamado PDV.
Ao clicar no item do menu chamado PDV é exibido uma JFrame que possui um JTextField,
uma JTable e alguns JLabels.
Conforme eu vou adicionando produtos na JTable dentro do JTextField é exibido o valor
total da venda.
Tenho dois eventos de teclado um F6 que invoca o dispose().
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getID() == KeyEvent.KEY_RELEASED && event.getKeyCode() == KeyEvent.VK_F6) {
frame.dispose();
// return true;
}
return false;
}
});
Tenho também um evento de teclado F4 que finaliza a venda.
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getID() == KeyEvent.KEY_RELEASED && event.getKeyCode() == KeyEvent.VK_F4) {
double valorTotalDaVendaConvertido = 0.0;
if (!tfValorTotalDaVenda.getText().equals("")) {
try {
valorTotalDaVendaConvertido = Double.parseDouble(tfValorTotalDaVenda.getText());
formaPagamentoPDV2 = new FormPagamentoPDV2();
formaPagamentoPDV2.setValorTotal(valorTotalDaVendaConvertido);
formaPagamentoPDV2.setTextFieldSubTotal();
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
formaPagamentoPDV2.setVisible(true);
tfValorTotalDaVenda.setForeground(new Color(255, 0, 0));
tfValorTotalDaVenda.setFont(new Font("Tahome", Font.BOLD, 18));
tfValorTotalDaVenda.setText(String.valueOf(formaPagamentoPDV2.getTextFieldSubTotal()));
if(formaPagamentoPDV2.getVendaFinalizada()) {
finalizaVenda();
}else {
formaPagamentoPDV2.getLimpaFormularioPagamento();
JOptionPane.showMessageDialog(null, "Você cancelou o pagamento!");
}
tfValorTotalDaVenda.setText(formaPagamentoPDV.getValorTotal());
return true;
}
return false;
}
});
O problema é o seguinte:
Se eu adiciono os produtos na JTable da JFrame FormPDV é exebido no JTexField o valor
total da venda, e ao invés de eu apertar F4 para finalizar a venda eu aperto F6 para
fechar a jenela, ou seja, é executado o método dispose().
Então vou lá no item do menu chamado PDV e abro novamente a JFrame FormPDV, dessa
vez eu adiciono os produtos na JTable e no JTextField é exibido o valor total da venda, até
aí normal, mas quando clico em F4 para finalizar a venda é exibida o JDialog com o valor
da 1° JFrame de FormPDV aberta ao invés do valor da 2° JFrame aberta de FormPDV.
Ou seja, depois da execução do método dispose() o campo JTextField não atualiza o valor, o valor da 1° JFrame FormPDV é mantido na 2° JFrame aberta de FormPDV.