Pessoal,
Como eu faço pra, depois de obter um resultSet, exibir apenas 30 registro de cada vez na JTable?
Porque trazer os 30000 registros eu já descobri que é inviável...
F.L
Pessoal,
Como eu faço pra, depois de obter um resultSet, exibir apenas 30 registro de cada vez na JTable?
Porque trazer os 30000 registros eu já descobri que é inviável...
F.L
vc pode criar um alimentador de model. e sempre que atingir a ultima linha no scroll, alimenta com mais linhas o model. Adiciona um listener no scrollpane da jtable pra sabeer qdo chegar no fim.
flw!
Uma coisa legal que vc pode fazer é o seguinte, primeiro vc consulta o número total de registros (30000) então no getRowCount vc devolve esses número, agora sua barra de rolagem vai estar correta, e vc pode trazer em blocos no momento que for pedido… por exemplo, o getValueAt vai pedindo as linhas q vão aparecendo, supomos que vc traga um bloco de 100 registros, enquanto o usuário estiver navegando entre os 100 primeiros registros serão mostrados os locais, no momento que for requisitado a linha 101 vc busca mais 100 registros e pode navegar tranquilamente entre esses próximos registros.
Não sei se fui claro :? , mas é por aí!
Fallow
Mas o resultSet nao possui getRowCount…
E mais… na lista eu vou usar o que? KeyListener?
[quote=tyrael]
Mas o resultSet nao possui getRowCount…
E mais… na lista eu vou usar o que? KeyListener?[/quote]
Vc pode fazer um count para saber o total de registros…
Quanto a segunda pergunta, não entendi, pra que um KeyListener??
[quote=TedLoprao][quote=tyrael]
Mas o resultSet nao possui getRowCount…
E mais… na lista eu vou usar o que? KeyListener?[/quote]
Vc pode fazer um count para saber o total de registros…
Quanto a segunda pergunta, não entendi, pra que um KeyListener??[/quote]
Porque o cara pode rolar com a seta pra baixo ou com PAGE_DOWN, oun ainda clicando na barra de rolagem. Como eu vou capturar isso tudo?
Não, não…
Vc implementa TableModel e vai controlando as buscas no getValueAt, o método só vai ser chamado quando necessário…
Por exemplo, se estiver aparecendo as linhas 1,2,3,4 e 5 na tela ele só vai chamar o getValueAt para essas linhas, se vc apresentar mais uma linha (seja através da barra de rolagem ou com o teclado ou qualquer outro método) ele vai chamar o getValueAt somente até a linha 6…
É mais ou menos isso!!
Fallow
Sim, entendi…
Como eu controlo essas buscas com getValue?
Pode ser mais específico?
heheheh, bom ai vai da tua necessidade e da possibilidade que a tua arquitetura lhe disponibiliza…
Por exemplo, vc poderia deixar isso a cargo do seu próprio List por exemplo, mas tudo depende do seu sistema.
Um exemplo seria vc criar uma TableModel normal, que trabalha com um List qualquer, dai no seu List vc poderia ter o seguinte:
public class LazyList implements List {
private List cache;
// métodos gerais do List
public Object get(int index) {
if (cache.size() <= index) {
// busca mais uma parte da lista e adiciona ao cache
}
return cache.get(index);
}
}
O controle de cache vc pode fazer como lhe parercer melhor… Mas esse é apenas um exemplo, vc poderia fazer o próprio TableModel ter esse controle ou até mesmo um outro objeto qualquer, por isso eu digo que isso depende mais de como se encaixar melhor na estrutura que vc possui…
Espero ter ajudado.