Galera estou fazendo 3 Jlables se movimentarem como se fossem uma tag marquee em html, onde o primeiro label é uma imagem, o segundo um texto e o terceiro outra imagem.
A movimentação ta blz. O problema é que em um dado período de tempo eu tenho que trocar essas imagens e o texto também e quando eu faço isto ele não muda.
Ou seja, eu chamo o jlabel.setIcon e ainda assim as figuras anteriores aiinda permanessem.
Alguém pode me dar uma luz???
PS: As figuras estão dentro de um pacote do meu projeto.
O nome do Pacote é Imagens.
Segue meu código.
class Movimenta extends Thread{
private int soma=0;
public void run() {
this.atualizaMensagem(new Mensagem("",1, "", ""));//aqui eu passo um objeto mensagem que nele contem os parametros que informam msg,tempo em que a //msg deve ficar em apresentação,nome da figura1,nome da figura 2
int f = jLabel2.getX();
int x = jLabel3.getX();
int k = jLabel4.getX();
Arquivo a = new Arquivo();
Vector<Mensagem> list = null;
while (true) {
list = a.getArquivoConfig().getMsgs1();
if (list.size() > 0) {
break;
} else {
try {
this.sleep(1500);
} catch (InterruptedException ex) {
Logger.getLogger(InternalProcessCritica.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
int qtdMsg = list.size();
int controle = 0;
while (controle <= qtdMsg) {
System.out.println(controle);
Mensagem m = list.get(controle);
this.atualizaMensagem(m);
Cronometro cron = new Cronometro();
cron.setTime(m.getTempo());
cron.start();
while (!cron.isLibera()) {
movimentarLabels(f, x, k);
}
controle++;
if (controle == qtdMsg) {
controle = 0;
list = a.getArquivoConfig().getMsgs1();
}
}
}
public void atualizaMensagem(Mensagem m) {
ImageIcon image = new ImageIcon(getClass().getResource("/Imagens/" + m.getFigura1()));
ImageIcon image2 = new ImageIcon(getClass().getResource("/Imagens/" + m.getFigura2()));
jLabel2.setIcon(image);
jLabel3.setText(m.getMsg());
jLabel4.setIcon(image2);
/*if(!m.getFigura1().equals(""))//aqui eu tentei utilizar o getUI.udate mas não deu certo. quando não há uma img ele levanta um NullPointerException
jLabel2.getUI().update(jLabel2.getGraphics(), jLabel2);
if(!m.getFigura2().equals(""))
jLabel4.getUI().update(jLabel4.getGraphics(), jLabel4);*/
}
public void movimentarLabels(int f, int x, int k) {
jLabel2.setBounds(jLabel2.getX() + 5, jLabel2.getY(), jLabel2.getWidth(), jLabel2.getHeight());
jLabel3.setBounds(jLabel3.getX() + 5, jLabel3.getY(), jLabel3.getWidth(), jLabel3.getHeight());
jLabel4.setBounds(jLabel4.getX() + 5, jLabel4.getY(), jLabel4.getWidth(), jLabel4.getHeight());
soma += 5;
if (soma == 1500) {
jLabel2.setBounds(f, jLabel2.getY(), jLabel2.getWidth(), jLabel2.getHeight());
jLabel3.setBounds(x, jLabel3.getY(), jLabel3.getWidth(), jLabel3.getHeight());
jLabel4.setBounds(k, jLabel4.getY(), jLabel4.getWidth(), jLabel4.getHeight());
soma = 0;
}
try {
this.sleep(100);
} catch (InterruptedException ex) {
Arquivo.gerarLOG(ex.toString());
}
}
}
Galera eu sei que minha forma de movimentação ta muito bizarra, mas eu gostaria de resouver primeiro este problema para após melhorar a lógica.