[RESOLVIDO] Mover JTextBox de um ponto a outro lentamente com o objeto Timer

3 respostas
R

Boa tarde!

Estou estudando Java e gostaria de auxílio no seguinte caso:

Utilizando o Netbeans, tenho como objetivo mover determinado JTextField de um ponto A para o B ao ser pressionado um botão. Só que gostaria que ele andasse por exemplo 10 pontos a cada segundo, e não simplesmente aparecesse no ponto B.

Abaixo segue o código até o momento:

int x = Processo3.getX();
        int y = Processo3.getY();
        for (int cont = x; cont < 200; cont ++){
             x = x+1;
             y = y + 1;
             Processo3.setLocation(x,y);
             try {
                 Thread.sleep (100);} 
             catch (InterruptedException e) {};
        }

Alguém tem alguma sugestão?

3 Respostas

thiagof

Olá RicardoKohatsu!

O que vc precisa é utilizar um Timer que vai disparar uma função a cada instante que vc definir para ele, ou seja, a cada segundo, aumentar em 10 pontos o tamanho do JTextBox

dá uma olhada nesses links para entender o que é um Timer:
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/timer.html
http://www.guj.com.br/java/35972-como-trabalhar-com-timer-em-java-
http://www.devmedia.com.br/como-configurar-o-timer-para-executar-tarefas-em-intervalos-constantes/2144
http://java.sun.com/products/jfc/tsc/articles/timer/
http://www.leepoint.net/notes-java/other/10time/20timer.html

R

Thiago

Cara, não sei nem como agradecer, passei o dia inteiro pesquisando uma maneira de fazer isso, o timer serviu perfeitamente.

O trecho do código ficou da seguinte maneira:

private void btnIniciarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        
        int valor1 = Integer.parseInt(Processo1.getText()); 
        int valor2 = Integer.parseInt(Processo2.getText()); 
        int valor3 = Integer.parseInt(Processo3.getText()); 
        Processo3.setLocation(10,10);
        timer = new Timer(10, new ClaseTimer());
        timer.start();
    }                                          
    public class ClaseTimer implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            int x = Processo3.getX();
            int y = Processo3.getY();
            if(x<200){
                x=x+1;
                Processo3.setLocation(x,y);
                
            }
            else{
                timer.stop();
            }
        }
        
    }

Agora sim vou terminar o meu trabalho xD

thiagof

Heheehe aee sim hen!!!

agora que funfou, edita o titulo do seu tópico para:
[RESOLVIDO] Mover JTextBox de um ponto a outro lentamente com o objeto Timer
para que outras pessoas que utilizarem a busca do google, possam ver o seu exemplo de código :wink:

Criado 22 de abril de 2012
Ultima resposta 22 de abr. de 2012
Respostas 3
Participantes 2