Pessoal,
Estou utilizando uma JTable + JScrollPane.
Quando eu movimento entre as linhas da tabela usando as setas para baixo e para cima, a movimentação entre as linhas e o scroll da página acontece sem problemas.
O caso é que preciso mudar essas teclas, ao invés de utilizar as setas pra cima e pra baixo, precisa ser, para esquerda e para direita.
criei um método para isso, que ao disparar a tecla (seta pra direita), ele executa este código:
tabela.setRowSelectionInterval(myRow, myRow);
myRow, é o parâmetro que eu passo, seria a próxima linha a ser percorrida.
Usando desta maneira, funciona, mas quando eu acabo de percorrer todos os registros presentes na tela, e movimento para o próximo registro, ele muda a linha, mas não faz o scroll.
Eu só consigo visualizar a próxima linha (que não estava aparente na tela) se pressionar a tecla seta para baixo, daí sim ele faz o scroll.
Resumindo, preciso fazer com que as teclas de seta esquerda e direita se comportem exatamente como as teclas seta para cima e para baixo, inclusive fazendo o scroll da página percorrida.
Eu acredito que utilizando este método abaixo, este seu problema seja resolvido.
private
void scrollToVisible
(
JTable table,
int rowIndex,
int vColIndex
)
{
if (
table.getParent() instanceof JViewport
)
{
//
// Cria um viewport para a tabela contida na JScrollPane.
//
JViewport viewport = (JViewport)table.getParent();
//
// This rectangle is relative to the table where the
// northwest corner of cell (0,0) is always (0,0).
//
Rectangle rect = table.getCellRect(rowIndex, vColIndex, true);
//
// The location of the viewport relative to the table
//
Point pt = viewport.getViewPosition();
//
// Translate the cell location so that it is relative
// to the view, assuming the northwest corner of the
// view is (0,0)
//
rect.setLocation(rect.x-pt.x, rect.y-pt.y);
//
// Scroll the area into view
//
viewport.scrollRectToVisible(rect);
}
}