Olá a todos. Anteriormente vim pedir ajuda de um colega aqui de fórum para fazar um autoScroll, funcionou até, quando utilizei em um painel simples sem background e muitas coisas desenhadas.
Então o problema é o seguinte, estou fazendo uma thread.sleep(10) e nesse intervalo de tempo a JScrollPane recebe na posição horizontal +1 pixel o que faz ela ir se movendo para a direita. Mas, econtrei um problema: quando executo ele até vai indo pra direita, mas, ele cria duas linhas “como se fossem um delay” do lado direito do painel, sendo que estas duas linhas não existem, se vc usar o scroll manualmente verá que isto não existe, então pessoal, segue o código da forma que estou fazendo a JScrollPane “caminhar”:
public class AutoScroll implements Runnable {
private JScrollPane pane;
private Thread thread;
private int valor = 10;
public AutoScroll(JScrollPane pane) {
this.pane = pane;
}
public void start(){
thread = new Thread(this);
thread.start();
}
public void interrupt(){
thread = null;
}
public void setValue(int valor){
this.valor = valor;
}
public void run() {
while(thread != null){
try {
thread.sleep(10);
scrollPane.getHorizontalScrollBar().setValue(scrollPane.getHorizontalScrollBar().getValue() + valor);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
(...) AutoScroll scroll = new AutoScroll(meuJScrollPane);
scroll.start();
daí acontece o delay (em anexo):
