Jump to content

Queria fazer algo no meu programa mas não sei como, ajuda?


Recommended Posts

Posted

Boas,

A janela do programa é a seguinte:

http://img585.imageshack.us/img585/6923/janela.jpg

Agora o que queria fazer é que no botão sinalizado aparece-se um contador em "HH, MM, SS" que fosse até ao tempo de actualização que iria ser definido pelo utilizador como por exemplo assim:

http://img809.imageshack.us/img809/6859/botaof.jpg

E fazendo o tempo de actualização que mudasse o texto para "Actualizando..." e depois repeti-se até o utilizador clicar no botão de novo

Já tentei procurar como poderia fazer mas não encontrei nada 😄

Se alguém me pudesse ajudar seria óptimo 😄

Posted

As minhas dúvidas são as seguintes:

  • Como é que crio o timer que vai desde o tempo que o utilizador define, segundo a janela "5" até 0
  • Como faço para quando chegar a zero usar o timer que já tenho feito e actualizar os dados

E bem penso que se resume a isto, no entanto o que me está a atrofiar mais é mesmo o primeiro ponto  😄

Posted

Um timer é apenas uma thread que executa em paralelo com a tua thread principal e que, em intervalos pré-definidos, executa uma acção. Neste caso um timer poderá decrementar o tempo. A formatação do tempo em minutos:segundos já será algo que tens de ser tu a fazer mas é algo simples.

Para criares o timer que conta o tempo, crias um timer com um intervalo de 1 segundo cuja acção é actualizar o texto e decrementar o contador de tempo.

Para determinares quando chegaste ao zero podes usar um segundo timer, apenas porque facilita a criação de acções independentes, ou usar o mesmo timer e ver quando o tempo chegou a zero.

Deixo um projecto exemplo, criado com NetBeans IDE, que usa dois timers independentes para fazer a contagem de tempo, o botão só é activado quando inserires um valor no campo dos minutos e, naturalmente, não tem qualquer protecção para erros ou preocupação com funcionalidade, http://www.speedyshare.com/files/27701339/TDemo.zip

A parte importe com uso de timers é:

//faz aparecer o tempo no botão
        tempo = new Timer(1000, new ActionListener()    {

            public void actionPerformed(ActionEvent e) {
                jbtnActualizar.setText("" + --segundos);
                System.err.println("tick...");
            }
        });

        //dispara quando os minutos definidos pelo utilizador chegarem ao fim
        //usa o MAX de inteiros para evitar que o evento dispare na criação do timer
        //já que ainda não sabermos qual o valor correcto a usar
        actualizador = new Timer(Integer.MAX_VALUE, new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(me, "Actualizar coisas....", "Tempo terminou!", JOptionPane.INFORMATION_MESSAGE);
            }
        });

//..... algum código depois, acção do botão
private void jbtnActualizarActionPerformed(java.awt.event.ActionEvent evt) {                                               
        if (iniciado) {
            actualizador.stop();
            tempo.stop();
            jbtnActualizar.setText("Iniciar");
        } else if (jftTempo.getValue() != null) {
            int t = Integer.parseInt(jftTempo.getValue().toString());
            segundos = t * 60; //minutos > segundos
            intervalo = segundos * 1000; // segundos > milisegundos
            actualizador.setInitialDelay(intervalo);
            actualizador.setDelay(intervalo);
            actualizador.restart();
            tempo.restart();
        }
    }

//.... resto do código
}
Posted

Knitter muito obrigado pelas dicas, vou já experimentar, no entanto penso que não lhe expliquei, é suposto queo botão "actualizar" faça o que tem a fazer sempre até que seja clicado outra vez... não sei se teve isto em conta :dontgetit:

Posted

Isso é apenas uma questão de colocares o código correcto na acção do botão, no exemplo que coloquei apenas foquei o uso dos timers porque parecia ser essa a dúvida, naturalmente, não coloquei o código para resolver o problema mas sim para exemplificar a utilização de um timer 😄

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.