Olá turma, 
Tenho que exibir em um painel uma proposta (parecida com aqueles textos de termos de responsabilidade) e esta deve aguardar o usuário responder “sim ou não” ao clicar em um dos botões antes de continuar.
O painel é exibido (inicialmente) assim que o usuário clica no botão “Cadastrar” da classe que exibe o painel. Mas, o que gostaria de fazer?
Gostaria que no código do ActionListener que está escutando as ações do botão “Cadastrar” só continuasse até o final após a resposta do usuário ser escolhida, sendo que a pergunta (painel.setVisible(true)
é chamada na linha x deste listener.
Então alguns meninos me deram idéias diferentes, sem sucesso. São elas:
- Como o painel é um objeto, você só chama o getResposta() para obter a resposta e continuar… não dá certo, pois o programa dá a resposta antes de o usuário selecionar (ou seja, por padrão, sempre falso, executou o código por completo sem esperar).
- Usa um JDialog… não dá certo, pois quero que a pergunta seja exibida dentro do painel, porém, o JDialog segura o sistema até que um dos botões sejam selecionados, quando modal=true. Daí surge a idéia que preciso: uma espécie de painel modal :idea:
- Usa uma Thread que aguarda a resposta para executar a atividade que deseja… mas pelas minhas leituras, uma Thread não morre nunca, o que seria inútil pois ela só será usada uma única vez e depois pode-se descartá-la.
:arrow: É bem parecido com o JDialog mas gostaria que o mesmo efeito ocorra em um JPanel. No JDialog com modal verdadeiro o sistema aguarda até que o usuário clique em um dos botões para liberar o resto do processamento. Ex:
- Método boolean pergunta() é chamado em uma classe x que possui herança JDialog que é construída pelo construtor JDialog(Frame frame, boolean modal);
- O método foi invocado pela classe y da seguinte forma:
if(metodo())
// faça isso..
else
// faça aquilo...
endif
- Este método tem dois botões “Sim ou não” que ao serem clicados ajustam o valor de retorno para “true ou false”;
- Então ao clicar em um dos botões, o JDialog seta a variável de retorno do método e se fecha;
- Aí sim o processamento restante do sistema completa-se e a resposta que o IF estava esperando para continuar chega certinha (conforme selecionada ao clique de um dos botões, o sistema aguardou).
Alguém arrisca uma idéia ?? Sei que a pergunta é enrolada então se alguém ficou confuso com alguma coisa, pergunte, please!
Obrigada, aguardarei!