Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Duvida em ações de 2 botões no Eclipse

Duvida em ações de 2 botoes: Estimados colegas no meu programa tenho 2 botoes que são eles: Botão Calcular que faz o calculo de algumas variáveis: Segue abaixo partes; double totalTempoRealTrab = (TotalMinutosInfo - TempoTotalPausas); double fatorMultCadastro = (objMultCadastro.valorDoFator); //O botão Calcular ao ser clica esta executando os Calculos corretos

Botão 2 é o Botão Salvar, que devera salvar os resultados do botão calcular, porém não estou conseguindo "Comunicação entre os 2 botões"

Segue o Codigo do Botão Salvar Button btnSalvarTRT = new Button(grpTrt, SWT.NONE); btnSalvarTRT.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { InsereTRTBd inserirResultTRT = new InsereTRTBd();//Aqui estou chamando uma classe que faz a inserção dos dados no Banco de Dados, Fiz o teste e esta funcionando. try { inserirResultTRT.InserirBD(totalTempoRealTrab, fatorMultCadastro);//Aqui esta a duvida: Minha ideia seria receber os 2 valores encontrados no botão calcular, passar para a classe e salvar no BD. } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }

}

O que devo fazer para que a ação do Botão Salvador, reconheça os dados do botão calcular?

7 respostas

Oi Rodiney, não entendi muito bem. Você quer fazer o calculo com o botão salvador, gravar no banco e mostrar esse resultado?

Diego Agradeço atenção, vou detalhar melhor. Como funciona O Programa: Primeiro o usuário seleciona várias opções Utiliza o Botão Calcular para realizar a soma de várias Variáveis, que o resultado é armazenado em uma Variável Final. Após realizar o calculo o Usuário deve clicar em outro Botão que é o Salvar, para salvar no Banco de Dados. Neste Botão Salvar não consigo utilizar a variável final gerada pelo botão Calcular.

A Classe que criei para inserir os dados no BD, esta funcionando. Porém o que não consigo é pegar o resultado gerado na ação do Botão Calcular e colocar na Ação do Botão Salvar.

Agradeço mais uma vez atenção.

Diego, estou colocando um pedaço do Código:

Button btnCalcular = new Button(grpTrt, SWT.NONE);
        btnCalcular.addSelectionListener(new SelectionAdapter() {
            private Component Janela;

            @Override
            // Calculo dos tempos de pausas
            public void widgetSelected(SelectionEvent e) {
            try {
                    //Existe mais códigos, porém para não ficar grande fiz um resumo.

                    //Resultado de Tempo Real Trabalhado
                    txtTotalMinutos.setVisible(true);
                    double totalTempoRealTrab = (totalMinutosInfo - tempoTotalPausas);
                    String resulTempoRealTrab = Double.toString(totalTempoRealTrab);
                    txtTempoRealTrabalho.setText(resulTempoRealTrab);


                    //Fator multiplicador da ferramenta OCRA
                    FatorMultiplicativo objMultCadastro = new FatorMultiplicativo();
                    objMultCadastro.retornaFator(totalTempoRealTrab);
                    double fatorMultCadastro = (objMultCadastro.valorDoFator);
                    String resulFatorMult = Double.toString(fatorMultCadastro);
                    txtFatorMult.setText(resulFatorMult);

                }//Fechando o try
                catch(NumberFormatException erro1){
                    // Caixa de mensagem
                    JOptionPane.showMessageDialog(Janela, // Janela da aplicação (opcional, pode ser null)
                            "Preencha os campos com valores numéricos válidos!", // Mensagem
                            "Erro de Validação", // Título da caixa de mensagem
                            JOptionPane.ERROR_MESSAGE // Ícone da caixa de mensagem
                        );
                }
            }
        });
        btnCalcular.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
        btnCalcular.setText("Calcular");


    //Salvando no Banco de Dados
        Button btnSalvarTRT = new Button(grpTrt, SWT.NONE);
        btnSalvarTRT.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                InsereTRTBd inserirResultTRT = new InsereTRTBd();
                try {
                    inserirResultTRT.InserirBD(totalTempoRealTrab, fatorMultCadastro);
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }

            }
        });

O que devo fazer para que a ação do Botão Salvar, reconheça os dados do botão calcular, como as variáveis totalTempoRealTrab, fatorMultCadastro ?

solução!

Oi Rodiney,

esse código acima nem compila, correto? O que acontece é que, como as variáveis são criadas dentro do bloco try do botão btnCalcular, o escopo delas (isto é, a permanência delas como disponíveis para acesso) acaba quando você fecha o bloco try.

Uma forma de fazer isso funcionar seria declarar essas variáveis em um escopo maior - por exemplo, acima da primeira linha que você colou na pergunta.

Isso funciona, mas não é recomendável considerando boas práticas de Orientação a Objetos, já que seu usuário vai ter que lembrar de clicar em Calcular antes clicar em Salvar... e, você pode apostar, ele provavelmente vai esquecer.

O tópico que discute isso em Orientação a Objetos é o princípio do bom cidadão (Good Citizen Principle) e, embora não tenhamos esse tópico exatamente em outro curso, duas recomendações são os cursos:

Boa sorte com o problema aí!

Bom Dia Cecilia Realmente o programa não funciona, quando clicado no botão Salvar. Em relação ao usuário clicar antes no Botão salvar, pensei em deixar ele invisível e habilitar após o botão calcular ser executado.

Irei estudar mais um pouco na resolução do Problema.

Att Rodiney

Muito Obrigado Cecilia! :D

Obrigado Cecilia Fernandes e Diego Medeiros

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software