(RESOLVIDO) Manter barra de rolagem (jscrollpane) fixo

Boa tarde!

Estou com um problema, já pesquisei e achei algo parecido (http://www.guj.com.br/java/88656-movimentar-jtable#474184), mas não está do jeito que deveria estar.

O meu caso é o seguinte:

Tenho uma tabela(jtable) que atualiza automaticamente em tempo de execução.
Preciso que a barra de rolagem (jscrollpane) matenha fixo no lugar onde o usuario deixar.
O problema é que toda vez que a tabela atualiza, a barra vai para o topo.

Imagina vc abrir uma tabela com varios nomes, quando estiver com a barra de rolagem bem em baixo e a tabela atualizar, vc irá perder o nome de vista.

Preciso que a barra de rolagem (jscrollpane) matenha fixo no lugar onde o usuario deixar.
OBS: Sem tocar na tabela (linha ou coluna), apenas clicando na barra de rolagem.
Clicando na tabela, o link acima funciona…

Alguém poderia me ajudar?

Eu fiz um exemplo aqui e a barra já fica onde está:

package teste;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;



public class TesteFrame extends JFrame {

	private static int numLinhas = 10;

	static class Model extends AbstractTableModel {
	    public int getColumnCount() { return 10; }
	    public int getRowCount() { return numLinhas;}
	    public Object getValueAt(int row, int col) { return new Integer(row*col); }
	    public void adicionarLinha(){
	  	  numLinhas++;
	  	  fireTableRowsInserted(numLinhas, numLinhas);
	    }
	};

	Model modelo = new Model();
	
	public TesteFrame(){
		
		setSize(400, 200);
		
	      JTable table = new JTable(modelo);
	      
	      JScrollPane scrollpane = new JScrollPane(table);
	
	      add(scrollpane);
	      
	      new Thread(
	    		  new Runnable() {
					
					@Override
					public void run() {
						while(true){
							SwingUtilities.invokeLater(new Runnable() {
								
								@Override
								public void run() {
									modelo.adicionarLinha();
								}
							});
							
							try {
								Thread.sleep(2000);
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
						
					}
				}
	    		  
	    		  
	    		  ).start();
	      
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new TesteFrame().setVisible(true);

	}

}

Fala Rogerio, blz né?
é isso mesmo que eu preciso!
Só que estou tentando entender para implementar o meu algoritmo aqui.

Obrigado!

O exemplo do Rogerio no meu caso não deu certo, pq sempre que atualizo a minha tabela eu apago tudo e preencho novamente.

Uma solução pro meu caso pensei da seguinte forma:
criar um ouvinte(listener) para a barra de rolagem (jscrollpane), quando a barra movimentar, pegar o valor referente a posição da barra.
após preencher a tabela, setar o valor obtido na barra de rolagem(jcrollpane).

Agora o problema é, COMO FAZER ISSO??

Obrigado pela dica Rogerio.

Consegui resolver o problema!
Ficou assim:


//Variaveis globais
    JScrollBar barraHorizontal;
    JScrollBar barraVertical;
    JScrollPane jspTabela;
    int POSICAO_SCROLL_X = 0;
    int POSICAO_SCROLL_Y = 0;


public void criaTabela(){

            //...

            barraHorizontal = jspTabela.getHorizontalScrollBar();
            barraVertical = jspTabela.getVerticalScrollBar();

// Adciona no listener
            barraHorizontal.addAdjustmentListener(new AdjustmentListener() {

                public void adjustmentValueChanged(AdjustmentEvent evt) {
                    POSICAO_SCROLL_X = barraHorizontal.getValue();
                }
            });

            barraVertical.addAdjustmentListener(new AdjustmentListener() {

                public void adjustmentValueChanged(AdjustmentEvent e) {
                    POSICAO_SCROLL_Y = barraVertical.getValue();
                }
            });
}

public void atualizaTabela(){
      //...

            try {
                barraHorizontal.setValue(POSICAO_SCROLL_X);
            } catch (Exception e) {
                //não existe esta posição após atualização da tabela
            }

            try {
                barraVertical.setValue(POSICAO_SCROLL_Y);
            } catch (Exception e) {
                //não existe esta posição após atualização da tabela
            }

}

Quando eu li sua mensagem pela primeira vez imaginei alguma coisa parecida com o que você fez, tipo guardar o valor antes de atualizar e depois restaurar o valor após atualizar, mas aí fiz o teste e vi que a tabela ficou no local sem eu fazer nada, hehehe
Legal que funcionou…

[]'s