Olá,minha dúvida é a seguinte,estou desenvolvendo um aplicativo simples para fins didáticos,onde o objetivo é permitir que o usuário cadastre seu usuário e alugue um carro.O usuário pode ser cadastrado como pessoa física ou jurídica.
O problema relacionado às janelas(talvez um problema relacionado a orientação a objetos),gostaria de saber como desativar temporariamente uma janela,enquanto outra janelas estiverem abertas:
Tenho um JFrame principal,que irá conter um JMenuBar,que irá possuir 4 itens;
Cada item do JMenuBar irá chamar um novo JPanel,através de um Listener,que está em uma classe interna,localizada dentro da classe do JFrame principal, cada Item possui uma classe interna específica com seu listener específico:
public class AlugarCarroPessoaFisicaListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
LoginPessoaFisica LPF = new LoginPessoaFisica();
FramePrincipal.this.cont.removeAll();
FramePrincipal.this.cont.add(LPF);
LPF.revalidate();
FramePrincipal.this.repaint();
FramePrincipal.this.pack();
}
}
public class CadastrarPessoaFisicaListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
CadastrarPessoaFisica CadPF = new CadastrarPessoaFisica();
FramePrincipal.this.cont.removeAll();
FramePrincipal.this.cont.add(CadPF);
CadPF.revalidate();
FramePrincipal.this.repaint();
FramePrincipal.this.pack();
}
}
public class AlugarCarroPessoaJuridicaListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
LoginPessoaJuridica LPJ = new LoginPessoaJuridica();
FramePrincipal.this.cont.removeAll();
FramePrincipal.this.cont.add(LPJ);
LPJ.revalidate();
FramePrincipal.this.repaint();
FramePrincipal.this.pack();
}
}
public class CadastrarPessoaJuridicaListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
CadastrarPessoaJuridica CPJ = new CadastrarPessoaJuridica();
FramePrincipal.this.cont.removeAll();
FramePrincipal.this.cont.add(CPJ);
CPJ.revalidate();
FramePrincipal.this.repaint();
FramePrincipal.this.pack();
}
}
Dois desses JPanels serão inseridos no próprio JFrame Principal(é o caso de Cadastrar pessoa física e cadastrar pessoa jurídica,que estão localizados em um JMenu chamado Cadastar);
Porém,os outros dois Itens irão chamar novos JFrames,é o caso do Item Pessoa Física(do Menu Alugar Carro) e do Item Pessoa Jurídica(também do Menu Alugar Carro).Esses dois itens são duas telas de login,um para pessoa física e outro para pessoa jurídica,se o login for aceito,o listener do botão logar irá chamar um novo JFrame,contendo um JPanel para escolher o carro alugado.É nesse ponto que chega a dúvida,como posso fazer para desativar o JFrame principal enquanto este frame de selecionar o carro estiver aberto?Existe outra maneira mais simples,ou melhor para desenvolver esse app?
Quero fazer isso porque quando o usuário clicar em login,e realizar um login bem sucedido,ele não poderá fazer isto de novo até que o aplicativo seja “reiniciado”.
Um diagrama malfeito da estrutura de janelas e frames do aplicativo:

Os retângulos verdes são JFrames,os Laranjas são JPanels,os pretos são classes internas e os Ls significam Login.
Perdoem-me por ter utilizado conceitos de POG,mas sem alguém puder me ajudar esclarecendo a minha dúvida,ou me dizendo alguma maneira diferente e melhor do que esta de realizar a tarefa ficaria agradecido.
