Executar metodo logo apos o fechamento de um formulario

6 respostas
E

Boa tarde pessoal, sou novo no site e desenvolvedor Delphi a anos e decidi aprender java, grande dificuldade pra quem programava no modo estruturado. Mas estou me dedicando a POO. Bem quanto a minha duvida é a seguinte: Tenho um formulário onde existe uma tabela com os nomes na esquerda e os dados de cada um na coluna da direita. No banco de dados existe uma coluna descrita como FormacaoID que é uma chave estrangeira da tabela denominada formações. Bem a ideia é filtrar os nomes da tabela pela formação, onde ao clicar no botão Filtrar o sistema abre uma lista com as formações, o usuário escolhe uma formação o sistema faz uma pesquisa e encontra o ID da formação para execuçao da SQL e filtragem por formação, o formulário de escolha se fecha e quando voltar ao formulário com os dados a tabela com os nomes deveriam estar filtradas, com as pessoas da formação escolhida. Consegui fazer tudo isso mas não consegui que ao fechar o formulário de filtragem o filtro fosse executado automaticamente logo que o formulário se fechasse. Se alguém puder ajudar muito grato.

6 Respostas

M

Eu to “enferrujadasso” em swing (pelo que pude perceber está usando swing correto? ) mas ao executar a ação de filtro,
chame o metodo dispose() da classe JFrame que fará o que vc precisa

E

Então amigão, muito obrigado pela resposta o meu método é este aqui:

public void preencherTabelaFiltrada(){                    
       
        if(atribuidos){
          preencherTabela("pessoas", "WHERE formacaoid = "+idFormacao+" AND atribuido='S' ORDER BY idpessoa");
        }else if(semAtribuicao){
            preencherTabela("pessoas", "WHERE formacaoid = "+idFormacao+" AND atribuido='N' ORDER BY idpessoa");
        }else{
            preencherTabela("pessoas", "WHERE formacaoid = "+idFormacao+" ORDER BY idpessoa");
        }          
    }

A ideia é que quando eu clicar em um botão chamado filtrar no meu form aparecerá um outro form com uma lista de formações o
usuário escolherá a formação desejada e assim será setada o valor da variável acima “idFormação”, com este valor eu tenho como
fazer o filtro no preenchimento da tabela. Mas gostaria que isso acontecesse logo que eu sair do form que lista as formacões, no momento estou tendo que clicar no mesmo botão duas vezes pra isso acontecer. Tentei eventos de saída de formulário mas não funfou. Acho que se trata de uma forma de executar o método ao sair ou entrar em um dos forms, mas ainda não consegui fazer.

M

Pelo que eu entendi ficaria mais ou menos assim:

public void acaoDoBotaoFecharDoSeuFormulario(){
    textFieldDoSeuFormularioDeBaixo.setText(suaSelecao.getId());
    this.dispose();    
}

lembrando que o formulario de consulta deve “enxergar” o componente do formulario abaixo, para setar o valor.

eu costumava trabalhar com Dialog para fazer esses tipos de busca, a implementacao é basicamente a mesma…enfim,
é mais ou menos isso, qualquer duvida posta ai…

E

Grato.
Na verdade não tenho um componente que recebe este valor e sim uma variável "idFormacao".
Este é o codigo do botão Filtrar do form principal:

[/code]
idFormacao = filtro.getValorIDFormacao(); //recebendo o valor do id que vem do form de escolha
nomeFormacao = filtro.getNomeFormacao();
atribuidos = filtro.isAtribuido();
semAtribuicao = filtro.isSemAtribuicao();

if(idFormacao > 0){
[color=red]preencherTabelaFiltrada(); [/color]
jLabelTitulo.setText(nomeFormacao);
btnFiltrarFormacao.setEnabled(false);
btnCancelar.setEnabled(true);
}else{
this.filtro.setVisible(true); //caso a variavel tenha o valor (0) abre o formulario secundario com as formacoes
btnFiltrarFormacao.setText("Executar Filtro");
ApagarCampos();
}
btnAlterar.setEnabled(false);
btnExcluir.setEnabled(false);
[code]

A questão é executar o método [color=red]preencherTabelaFiltrada(); [/color] logo que o formulario com as formacoes se fechar

M

do jeito que vc explicou eu fiquei meio confuso kkkkk mas vamo la…vou passar a lógica:
a lista de formações que voce for exibir em sua tela de consulta, sugiro usar uma lista de objetos do tipo Formacao, com essa lista
voce nao precisa consultar o ID desse objeto posteriormente.
Utilizando uma tabela, na tela de consulta sugiro adicionar um evento de duplo click no registro selecionado…
dentro desse evento voce acessa uma variavel do tipo Formacao declarada no Form “PAI” e seta o registro selecionado nela
na sequencia voce usa o metodo formConsulta.dispose() e no mesmo metodo voce executa tua pesquisa, passando como parametro
o objeto selecionado. Ele vai fechar a tela de consulta e fitrar os dados.
Nao sei se eu consegui ser claro, mas tenta seguir essa logica ai que fica bacana.

E

Valeu vou tentar… Grato.

Criado 29 de janeiro de 2015
Ultima resposta 4 de fev. de 2015
Respostas 6
Participantes 2