Pessoal, não tenho conhecimento em Thread e em Timer mas consegui criar esses dois métodos porém está com um erro e não consigo resolver, a idéia é o seguinte: um classe manda uma jlabel para o método mostraLabel e ele chama o outro método desizaLabel os dois metodos abaixo vai apresentar a mensagem durante 3 segundos e dois deslizar para sair da tela.
Sei que tem um erro no loop do metodo deslizaLabel pois ele esta com loop infinito mas não consigo tirar… quero que ao jlabel deslizar até o fim do form ele finalize o Thread.
e também se alguém tiver alguma sugestão de como otimizar esse processo será bem vindo.
public void mostraLabel(JLabel lbl) {
ActionListener action = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tempo.stop();
deslizaLabel(lbl);
}
};
tempo = new Timer(3000, action);
tempo.start();
}
private void deslizaLabel(JLabel lbl){
new Thread(){
@Override
public void run(){
int x = 0;
int y = lbl.getLocation().y;
while(true){
x++;
if(x > lbl.getWidth()){
this.stop();
}
lbl.setLocation(x,y);
try {
sleep(10);
} catch (InterruptedException ex) { }
}
}
}.start();}