Estou desenvolvendo uma aplicação e gostaria que em um determinado evento da minha classe, um pequeno jpanel fosse aberto (tipo um popup), e nele iria conter um JLabel, um JButton Ok e um JButton Cancelar. Ao clicar no botão Ok, o jpanel seria fechado, e o valor do campo informado no mesmo seria mandado para o Jpanel Pai.
Seria a mesma idéia de qndo abrimos um popup e usamos propriedade opener do método window para mandar um determinado valor para a página Pai.
Mas como eu faria o JPanel abrir após a chamada de um evento? E fechar qndo clicasse no botão Ok do mesmo?
ViniGodoy
O JOptionPane fecha-se automaticamente quando alguém clica no botão Ok dele. E retorna um valor, que corresponde ao botão clicado.
Por exemplo, você pode fazer:
botaoExcluir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (JOptionPane.showConfirmationDialog(this, "Tem certeza que que excluir") != JOptionPane.YES_OPTION)
return;
fazAExclusao();
}
}
Esse código fará que, ao clicar no botão de excluir (note o evento ActionPerformed), uma janelinha apareça confirmando a exclusão. Quando o usuário pressionar YES, a janela fecha e o valor YES_OPTION é retornado. Caso contrário, a ação é a abortada (quando o usuário clica em NO ou fecha a janelinha no X).
MarujoRafao
Mas no meu caso, eu precisaria abrir um JPanel para que pudesse ser feita uma entrada de dado. E ao fechar esse JPanel, retornar para o JPanel pai o valor que foi digitado lá. No caso do JOptionPane, ele retornaria apenas valores boolean.
:?
ViniGodoy
Veja então a classe JDialog e a opção modal.
Para retornar dados de um JDialog para o frame que o chamou, crie métodos getters, como vc faria com qualquer objeto.