Criar uma JFrame que valida ações em outra JFrame

6 respostas
rotteny

Olá pessoal, coisas de noob pr vc´s ajudarem. Seguinte:
Quero criar uma Jframe com opções OK e Cancela, para confirmar ações de inclusão, exclusão e outras ações para garantir que o usuario realmente deseja executar a ação indicada. Deve ser um frame generica so que eu não estou encontrando o melhor meio de implementar.

Criei uma variavel com valor default “false” que poderia ser mudada caso o usuario clicasse em OK, mas ela sempre passa o valor defalt imediato sem esperar pela minha interação.
Depois tentei passar o método como parametro, mas vi que seria impossível.

Espera ajuda,

Grato!

6 Respostas

Eric_Yuzo

Seria somente a caixa de diálogo padrão para confirmação?

Se for, pode usar o option pane, que já vem pronta:

int opcao = JOptionPane.showConfirmDialog(this ,"Confirma a operação?", "Confirmação", JOptionPane.YES_NO_OPTION); if (opcao == JOptionPane.YES_OPTION) { // Confirmou . . . } else { // Não confirmou . . . }
Mas se quiser fazer uma janela personalizada, use JDialog no lugar do JFrame.

esdmorais

Boa noite!

Tem um jeito melhor de vc fazer isso cara.
No pacote swing, existe uma classe q chama JOptionPane, ela tem várias opções de caixa de mensagem de diálogo, tanto entrada de dados ou confirmação, como é o seu caso.

É mais ou menos algo assim:

JOptionPane.showConfirmDialog(null, "Tem certeza que deseja gravar?")

Espero ter ajudado.
Guri.

Nicolas_Fernandes

rotteny:
Olá pessoal, coisas de noob pr vc´s ajudarem. Seguinte:
Quero criar uma Jframe com opções OK e Cancela, para confirmar ações de inclusão, exclusão e outras ações para garantir que o usuario realmente deseja executar a ação indicada. Deve ser um frame generica so que eu não estou encontrando o melhor meio de implementar.

Criei uma variavel com valor default “false” que poderia ser mudada caso o usuario clicasse em OK, mas ela sempre passa o valor defalt imediato sem esperar pela minha interação.
Depois tentei passar o método como parametro, mas vi que seria impossível.

Espera ajuda,

Grato!

Oi, cara!
Tudo bem?
Bom, eu resolvo esse problema da seguinte maneira…

Eu crio, em minha tela, cinco botões. Vamos dividí-los em botões de ação e botões de confirmação.
Botões de ação: Adicionar, Editar, Remover
Botões de confirmação: Confirmar e Cancelar

Quando os botões de ação estão habilitados, os botões de confirmação não, e vice-versa. Para o controle disso, uso um método assim:

public void habilitarAcoes( Boolean habilitar ) {

    buttonAdicionar.setEnabled( habilitar );
    buttonEditar.setEnabled( habilitar );
    buttonRemover.setEnable( habilitar );

    buttonConfirmar.setEnabled( !habilitar );
    buttonCancelar.setEnabled( !habilitar );
}

Tá… Se eu clico em Adicionar, por exemplo, aparece o painel com os dados para cadastro. Eu faço isso quando tenho as tanto uma tabela para apresentação dos dados quanto o painel de cadastro/edição no mesmo JFrame.

public class AdicionarHandler implements ActionListener {

    public void actionPerformed( ActionEvent e ) {

        panelCadastro.setVisible( true );  // mostro o JPanel
        habilitarAcoes( false ); // botões de Confirmar e Cancelar habilitados
    }
}

Daí, eu vou e preencho os dados bonitinhos no JPanel. Quando o usuário clicar em Confirmar…

public class ConfirmarHandler implements ActionListener {

    public void actionPerformed( ActionEvent e ) {

        UsuarioController controllerUsuario = new UsuarioController();
        Usuario usuario = new Usuario();

        usuario.setNome( textNome.getText() );
        usuario.setEmail( textEmail.getText() );
 
        controllerUsuario.adicionarUsuario( usuario ); 
    }
}

Caso contrário, não faz nada, limpa e esconde o JPanel, e boa!
O que acha dessa solução?

Abraços!

rotteny

Poxa, vlw mesmo pessoal. Sabia que tinha um jeito facild e fazer, mas não consegui achar. Obrigado pelo apoio!

rotteny

Juntei a resposta do esdmorais a do Eric e deu o resultado que eu queria!

ClienteDAO dao = new ClienteDAO();
int opcao = JOptionPane.showConfirmDialog(null, "Confirma a exclusão do Cliente?"); 
if (opcao == JOptionPane.YES_OPTION){
  dao.removeCliente(Integer.parseInt(obj.toString()));
  new ShowMenssagem("Cliente excluido com sucesso!");
}

Agora só mais uma coisas:

  • Tem como eu retirar o botão cancelar que tem a mesma função do “Não” (é so pra ficar mais agradavel), se não não tem problema, ja ta otimo assim.
Eric_Yuzo
Usando este construtor, no terceiro argumento está sendo especificado o título da janela, e no quarto os botões.

Usando este construtor, no terceiro argumento está sendo especificado o título da janela, e no quarto os botões.

Criado 30 de janeiro de 2011
Ultima resposta 31 de jan. de 2011
Respostas 6
Participantes 4